mazuro
mazuro

Reputation: 32

How to save sessions in Laravel 8

I am using Laravel 8, and I have been having problems with sessions. On the data page, I display the session variable temperature, but when I go to the main page and return back, the session is deleted. Maybe someone knows what the problem is? If I refresh the page, all is okay.

Controller

public function set(Request $request)
{
    $request->session()->put([
        'temperature' => $request->Temperature,
        'pressure' => $request->Pressure,
        'speed' => $request->Speed,
        'precipitation' => $request->Precipitation,
    ]);

    return view('settings');
}

View

<select class="p-1 rounded-2" name="Temperature">
    <option value="temp_c">Celsius</option>
    <option value="temp_f" {{ session('temperature') == 'temp_f' ? 'selected':''}}>
        Fahrenheit
    </option>
</select>

config/session

'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', 120),

Upvotes: 0

Views: 2797

Answers (2)

miken32
miken32

Reputation: 42676

You should not use the session for this purpose. Pass variables to the view using the with() method. E.g.:

public function settings(Request $request)
{
    $data = [
        'temperature' => $request->Temperature,
        'pressure' => $request->Pressure,
        'speed' => $request->Speed,
        'precipitation' => $request->Precipitation,
    ];

    return view('settings')->with($data);
}

And then in your view:

<select class="p-1 rounded-2" name="Temperature">
    <option value="temp_c" {{ $temperature === 'temp_c' ? 'selected' : '' }}>Celsius</option>
    <option value="temp_f" {{ $temperature === 'temp_f' ? 'selected' : '' }}>Fahrenheit</option>
</select>

Upvotes: 3

SEYED BABAK ASHRAFI
SEYED BABAK ASHRAFI

Reputation: 4271

Use Session facade for putting data in session:

\Session::put([
    'temperature' => $request->Temperature,
    'pressure' => $request->Pressure,
    'speed' => $request->Speed,
    'precipitation' => $request->Precipitation,
]);

If you want to retrieve and delete the data from session by one method use pull method on Session facade as said here

Upvotes: 1

Related Questions