Chonchol Mahmud Chonchol Mahmud - 7 months ago 28
SQL Question

Why show Undefined variable error in Laravel 5.2?

First take a look my working file.

ActionController.php:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Action;
use App\Role;
use App\Http\Requests;

class ActionController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//

$actions = Action::where('id','>=',1)->paginate(10);

$roles = Role::all();
$data = ['roles' => $roles];
return view('actions.index',['actions'=>$actions]);
}


index.blade.php:

<table id="example2" class="table table-bordered table-hover" width="100%">

<thead>
<tr>
<th>URI</th>
<th>Action</th>
@foreach($roles as $role)
<th>{{$role->role}}</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach($actions as $action)

<tr>
<td>{{$action->uri}}</td>
<td>{{$action->action}}</td>
<td>{{$action->role}}</td>
</tr>

@endforeach
</tbody>
</table>


When i trying to show
actions
in
foreach
its working fine but when i want to show
roles
in
foreach
loop then its showing
Undefined variable: roles
error. How can i show the roles in actions index?

Answer

Because you were not passing $roles variable within your view it should be passed it like as

return view('actions.index',['actions'=>$actions])->withRoles($roles);

or you can simply pass it like as of actions

return view('actions.index',['actions'=>$actions,'roles' => $roles]);

or

$data = ['actions'=>$actions,'roles' => $roles];
return view('actions.index',$data);
Comments