Reputation: 471
The error is:
Undefined variable: room_state (View: /var/app/current/resources/views/pages/room.blade.php)
In my controller I have:
$room_state = 1;
$rooms = DB::table('room')->select('*')->where('room_id', '=', $room_id)->get();
$doors = DB::table('door')->select('*')->where('room_id', '=', $room_id)->get();
foreach ($rooms as $room) {
if (empty(session()->get('user.rooms')) || ! in_array($room->room_id, session()->get('user.rooms')) ) {
session()->push('user.rooms', $room->room_id);
$room_state = 0;
}
else {
$room_state = 1;
}
}
return view('pages/room', ['rooms' => $rooms], ['doors' => $doors], ['room_state' => $room_state] );
In my view, I have:
<p>Room State: {{ $room_state }}</p>
My view was working before I added the room state to return, what am I doing wrong?
Upvotes: 1
Views: 202
Reputation: 2355
Try to return the values in just one array
return view('pages/room', ['rooms' => $rooms,'doors' => $doors, 'room_state' => $room_state]);
or you use compact
return view('pages/room', compact('rooms', 'doors', 'room_state));
Upvotes: 0
Reputation: 14982
You're passing multiple parameters instead of a single parameter with all keyvalue pairs to your view()
call.
Do this instead:
return view('pages/room', ['rooms' => $rooms, 'doors' => $doors, 'room_state' => $room_state]);
Or, simply use compact()
since the variable names are the same as the key names:
return view('pages/room', compact('rooms', 'doors', 'room_state'));
Upvotes: 3