Как сохранить данные в моей сессии во время всех запросов в 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 в массив, но когда я иду, чтобы увидеть, если он держит в массиве в другом месте, я не получаю человека ...

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

На самом деле мне нужно добавить несколько зарегистрированных к событию... событие уже находится в базе данных, но зарегистрированные я хочу временно иметь их в течение всего сеанса, пока условия не будут выполнены, как это можно было бы сделать?

Author: Shaz, 2017-07-07

1 answers

Ну, я действительно сделал тест, и сеанс работает без проблем, что происходит, так это то, что вы используете helper dd() и не разрешаете фактически сохранять модификацию сеанса, что происходит в конце жизненного цикла Laravel.

У вас есть два варианта:

  • удалите dd() и попробуйте dump() в следующем представлении, которое вы показываете.
  • использует Session::save() после Session::put() для немедленного хранения данных сеанса, хотя это будет в конкретных случаях или для тестирования.
 1
Author: Shaz, 2017-07-07 15:46:20