在laravel路由文件中获取当前用户名而无需从控制器传递

时间:2018-12-19 06:34:59

标签: php laravel routes username

您好,我想知道如何访问laravel路由文件中的当前用户名?我想在URL中添加当前用户名作为前缀,但是我不想为每个路由调用传递用户名作为参数,因为项目已经完成,因此这是一项复杂且耗时的任务。因此,请提出如何获取当前用户名的建议。 这是我的代码:

Route::prefix(/Auth::user()->name)->group(function () {
   Route::get('/test', 'HomeController@test')->name('test');
});

<a href="{{route('test')}}">

先谢谢了。

注意:-我不想从模板或控制器传递用户名,因为它已经很复杂且耗时,因为项目已经完成。

2 个答案:

答案 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'));
      }
   }