Эта функция получит значение сеанса

public function getSession(){
    $value =Session::get('email');
    var_dump($value) ;
}

Эта функция используется для установки значений сеанса

public function setSession(){
    Session::put('email', 'aaaaaaa.com');

    $value=Session::get('email');
    var_dump($value);

}

Routes.php

Route::get('store','Product@setSession');
Route::get('display','Product@getSession');

При отображении типа в URL-адресе отображается NULL

3
sasy 4 Янв 2016 в 14:12

2 ответа

Лучший ответ

Поскольку вы используете Laravel 5.2, вероятно, вам придется настроить маршруты в группе 'web', чтобы иметь возможность использовать сеанс.

Фактически, Laravel инициализирует сеанс в промежуточном программном обеспечении \Illuminate\Session\Middleware\StartSession::class, которое сгруппировано в группе промежуточного программного обеспечения 'web' (как вы можете видеть из файла Kernel.php)

Итак, чтобы использовать сеанс, ваши маршруты должны использовать это промежуточное ПО:

Route::group(['middleware' => ['web']], function () {
    Route::get('store','Product@setSession');
    Route::get('display','Product@getSession');
});

Кроме того, я предлагаю вам правильно закрыть цикл запросов, чтобы убедиться, что сеанс будет установлен, например:

public function setSession(){
    Session::put('email', 'aaaaaaa.com');
    $value=Session::get('email');

    //this will end the request-lifecycle 
    return Response::json(['result' => 'ok']);
}
2
Moppo 5 Янв 2016 в 14:10

Если вы установите laravel 5.2 только что, вы увидите, что в файле маршрута добавлено промежуточное ПО ['web'], которое находится в \ Illuminate \ Session \ Middleware \ StartSession :: class, и если вы будете использовать сеанс в этой группе в route, сессия там будет нормально работать, или если вы используете любую другую группу, вам нужно использовать это промежуточное ПО.

0
Ankur Mishra 4 Янв 2016 в 13:01