I have some code like this:
Route::group(['prefix'=>'dashboard'],function(){
Route::get('addnew',function(){
$user = DB::table('users')->where('username','=',session('username'))->first();
$data = array('level' => $user->level, 'name' => $user->name,'email' => $user->email);
return view('layout.addnew')->with($data);
});
Route::get('load',function(){
$user = DB::table('users')->where('username','=',session('username'))->first();
$data = array('level' => $user->level, 'name' => $user->name,'email' => $user->email);
return view('layout.load')->with($data);
});
});
But it don't work when i use public variable like this:
Route::group(['prefix'=>'dashboard'],function(){
$user = DB::table('users')->where('username','=',session('username'))->first();
$data = array('level' => $user->level, 'name' => $user->name,'email' => $user->email);
Route::get('addnew',function(){
return view('layout.addnew')->with($data);
});
Route::get('load',function(){
return view('layout.load')->with($data);
});
});
Help me please!
As you're using a Closure, you need to explicitly grant access to the variables, as they are outside of the context of the function. You do this with the "use" function.
Route::group(['prefix'=>'dashboard'],function(){
$user = DB::table('users')->where('username','=',session('username'))->first();
$data = array('level' => $user->level, 'name' => $user->name,'email' => $user->email);
Route::get('addnew',function() use($data) {
return view('layout.addnew')->with($data);
});
Route::get('load',function() use($data) {
return view('layout.load')->with($data);
});
});