Which route(s) are you speaking about? Also, why do you pass user to the view(s) using the compact and with approaches?
Aug 17, 2022
6
Level 1
$user works in one route but returns undefined in another
I have this function set up in my controller:
public function show($user) {
$user = User::findOrFail($user);
$institutions = Institution::orderBy('name')->get();
// THIS WORKS
if (auth()->user()->id === $user->id OR Auth::user()->hasRole('client')) {
return view('agents.front.show', compact('user', 'institutions'))->with([
'user' => $user,
]);
}
// THIS DOESN"T
if(Auth::user()->hasRole(['admin', 'staff'])) {
return view('dashboard.agents.show', compact('user'))->with([
'user' => $user,
]);
} else {
abort(404);
}
}
In the first instance, I have no problem, everything comes back fine... in the second the view returns "Undefined variable $user".
It makes no sense. My routes are as follows:
// THESE WORK
Route::group(['prefix' => 'portal/c', 'middleware' => ['auth', 'role:client', 'App\Http\Middleware\PreventBackHistory']], function() {
Route::get('lenders/lender/{user}', 'App\Http\Controllers\AgentController@show')->name('client.lender.show');
});
Route::group(['prefix' => 'portal/l','middleware' => ['auth', 'role:agent', 'App\Http\Middleware\PreventBackHistory']], function() {
Route::get('/', 'App\Http\Controllers\AgentController@index')->name('index.l');
Route::group(['prefix' => 'lenders'], function(){
// Route::get('lender/{user}', 'App\Http\Controllers\AgentController@show')->name('agent.show');
Route::get('lender/{user}/edit', 'App\Http\Controllers\AgentController@edit')->name('agent.edit');
Route::patch('lender/{user}', 'App\Http\Controllers\AgentController@update')->name('agent.update');
});
});
// THIS DOESN'T WORK
Route::group(['prefix' => 'dashboard', 'middleware' => 'role:staff|admin|superAdmin', 'App\Http\Middleware\PreventBackHistory'], function() {
// -- Lenders --//
Route::group(['prefix' => 'lenders'], function() {
Route::get('/', 'App\Http\Controllers\AgentController@index');
Route::get('lender/create', 'App\Http\Controllers\AgentController@create');
Route::get('s', 'App\Http\Controllers\AgentController@store');
Route::get('lender/{ user }/edit', 'App\Http\Controllers\AgentController@edit');
Route::get('lender/', 'App\Http\Controllers\AgentController@show')->name('lender.show');
});
});
How can $user work for one but not the other?
Please or to participate in this conversation.