您好,我想知道如何访问laravel路由文件中的当前用户名?我想在URL中添加当前用户名作为前缀,但是我不想为每个路由调用传递用户名作为参数,因为项目已经完成,因此这是一项复杂且耗时的任务。因此,请提出如何获取当前用户名的建议。 这是我的代码:
Route::prefix(/Auth::user()->name)->group(function () {
Route::get('/test', 'HomeController@test')->name('test');
});
<a href="{{route('test')}}">
先谢谢了。
注意:-我不想从模板或控制器传递用户名,因为它已经很复杂且耗时,因为项目已经完成。
答案 0 :(得分:0)
在初始化会话之前注册路由。因此,您无法在路由文件中访问经过身份验证的用户。
因此,您必须使用新的用户名前缀注册新路由,
Route::prefix('{username}')->group(function () {
Route::get('/test', 'HomeController@index');
});
只需添加一个参数{username}
,并且无需在任何地方使用它。将此路由组保留在路由文件的末尾。
重新生成您的路线,
<a href="{{ url(auth()->user()->name . '/test') }}">
答案 1 :(得分:0)
您不能从route / web.php传递Auth用户,您需要在route中传递参数。
Route::group(['middleware'=>'auth','prefix'=>'/'],function () {
Route::get({username}, 'HomeController@test');
});
在您的控制器中:
public function test(Request $request,$username){
$user=User::where('name',$username)->first();
if($user){
return response()->json((array('status'=>'success','user'=>$user));
}else{
return response()->json(array('status'=>'error','message'=>'user not found'));
}
}