【问题标题】:Session doesn't save value with redirect-> "with" method laravel 5.2会话不使用redirect->“with”方法laravel 5.2保存值
【发布时间】:2017-03-31 11:22:48
【问题描述】:

当我这样放数据时:

$request->session()->put('123', '12345')

,会话包含这个值,但是当我尝试以这种方式将数据放入会话时

$result = ['status' => 'Product has been updated']
return redirect('/admin/products/')->with($result);

会话不包含它。

kernel:

    class Kernel extends HttpKernel
{

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
         \Illuminate\Session\Middleware\StartSession::class,
         \Illuminate\View\Middleware\ShareErrorsFromSession::class
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],

        'api' => [
            'throttle:60,1',
        ],
    ];

    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];
}

routes:

    Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
        Route::get('/', ['uses' => 'Admin\IndexController@index', 'as' => 'adminIndex']);
        Route::resource('/products', 'Admin\ProductController');
    });

我对 laravel 5.2 中的更改感到不满,并且这个问题可能会导致 Web 中间件,但我的路由中没有。那么为什么会话不包含给定的状态呢?

【问题讨论】:

  • 删除它导致问题描述得非常不清楚
  • 您能否在您的Kernel.php 中也包含web 数组?
  • 你是什么意思?
  • 在问题中显示完整的内核
  • 尝试从$middlewareGroupsweb 数组中删除StartSessionShareErrorsFromSession,因为您现在要启动它两次。

标签: php laravel session


【解决方案1】:

您可以在执行重定向之前使用Session::flash(key,value) 函数存储一次检索数据。

Session::flash('123', '12345');

session()->flash('123','12345');
return redirect('/admin/products/');

您可以稍后读取这些值,但只能读取一次,它将解决您的问题。

【讨论】:

  • 呃,flash 需要 2 个参数,我有一个数组:c
  • 您可以简单地json_encode()您的阵列,然后在读取时对其进行闪烁和解码。
  • @Batmannn 你可以做Session::flash('status',$result["status"]) 但我怀疑它会起作用,因为redirect()->with() 实际上在内部刷新数据。
猜你喜欢
  • 2016-05-23
  • 1970-01-01
  • 2016-08-25
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2016-11-27
相关资源
最近更新 更多