baumli
baumli

Reputation: 471

Undefined variable in view after adding it to controller

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

Answers (2)

Dimitri Mostrey
Dimitri Mostrey

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

Phiter
Phiter

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

Related Questions