получить текущее имя пользователя в файле маршрута laravel без передачи из контроллера - PullRequest
0 голосов
/ 19 декабря 2018

Здравствуйте, я хочу знать, как я могу получить доступ к текущему имени пользователя в моем файле маршрута laravel?Я хочу добавить текущее имя пользователя в качестве префикса в моем URL, но я не хочу передавать имя пользователя в качестве параметра для каждого вызова маршрута, потому что проект уже завершен, поэтому это сложная и трудоемкая задача.поэтому, пожалуйста, предложите, как я могу получить текущее имя пользователя.Вот мой код:

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

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

Заранее спасибо.

Примечание: - Я не хочу передавать имя пользователя из шаблонов или контроллера, потому что это сложно и требует много времени, так как проект уже завершен.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы не можете передать пользователя Auth из маршрутов / web.php, вам нужно передать параметр в вашем маршруте.

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'));
      }
   }
0 голосов
/ 19 декабря 2018

Маршруты регистрируются до инициализации сеанса.Таким образом, вы не можете получить доступ к аутентифицированному пользователю в файле маршрутов.

Поэтому вы должны зарегистрировать новые маршруты с фиктивным префиксом имени пользователя как,

Route::prefix('{username}')->group(function () {
    Route::get('/test', 'HomeController@index');
});

Просто добавьте параметр{username} и не нужно нигде использовать.Сохраните эту группу маршрутов в конце файла маршрутов.

Повторно сгенерируйте ваши маршруты как,

<a href="{{ url(auth()->user()->name . '/test') }}">
...