Как сохранить данные в моей сессии во время всех запросов в Laravel 5.1?
Привет, мне нужно сохранить некоторые данные, которые вы отправили из формы, в массиве, который я храню в Session laravel, я делаю это следующим образом:
в routes.php у меня есть:
Route::bind('evento', function($slug){
return Deportes\Evento::where('slug', $slug)->first();
});
Route::get('tienda/agregar/{evento}', [
'as' => 'inscribir-evento',
'uses' => 'TiendaController@agregar']);
Route::get('tienda/{slug}', [
'as' => 'eventos-detalles',
'uses' => 'TiendaController@detalle']);
Route::post('tienda/inscribir/{evento}',[
'as'=> 'inscrito-inscribir',
'uses'=>'TiendaController@inscribir'
]);
Route::get('tienda/', 'TiendaController@index');
в моем Controller:
public function index()
{
// $tienda = \Session::get('tienda');
dd(\Session::get('tienda'));
// return view('tienda.tienda', compact('tienda'));
}
public function agregar(Evento $evento){
$tienda = \Session::get('tienda');
if ($tienda = null) {
$tienda[$evento->slug] = $evento;
\Session::put('tienda', $tienda);
return view('tienda.inscribir', compact('tienda'));
}
else{
\Session::forget('tienda');
$tienda[$evento->slug] = $evento;
\Session::put('tienda', $tienda);
return view('tienda.inscribir', compact('tienda'));
}
}
public function inscribir(Evento $evento, Request $request){
$tienda = \Session::get('tienda');
$inscrito = [
'nombre'=>$request->get('nombre'),
'edad'=>$request->get('edad'),
'cedula'=>$request->get('cedula'),
];
$tienda[$inscrito['cedula']] = $inscrito;
\Session::put('tienda', $tienda);
dd(\Session::get('tienda'));
//return view('tienda.inscribir', compact('tienda'));
}
Теперь, когда я регистрирую человека в событии, он добавляет меня к человеку по его cedula в массив, но когда я иду, чтобы увидеть, если он держит в массиве в другом месте, я не получаю человека ...
На самом деле мне нужно добавить несколько зарегистрированных к событию... событие уже находится в базе данных, но зарегистрированные я хочу временно иметь их в течение всего сеанса, пока условия не будут выполнены, как это можно было бы сделать?
1 answers
Ну, я действительно сделал тест, и сеанс работает без проблем, что происходит, так это то, что вы используете helper dd()
и не разрешаете фактически сохранять модификацию сеанса, что происходит в конце жизненного цикла Laravel.
У вас есть два варианта:
- удалите
dd()
и попробуйтеdump()
в следующем представлении, которое вы показываете. - использует
Session::save()
послеSession::put()
для немедленного хранения данных сеанса, хотя это будет в конкретных случаях или для тестирования.