Reputation: 32
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
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
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