URL не получает имя пользователя от маршрута в Laravel 5 - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь показать страницу автора по URL: domian.com/author/page/{username}.

Вот маршрут:

Route::get('author/page/{username}', 'FrontendAuthorController@index');

Вот контроллер (FrontendAuthorController @ index):

public function index($username)
{
    $user = BasicInfo::where('username', $username)->first(); 

    //'username' is a field of BasicInfo Model. 
    //BasicInfo belongs to User model. 
    //So, we can get user id by $user->user_id according to eloquent rule. 

    $author = User::findOrFail($user->user_id);

    return view('frontend.author', compact('author'));
}

Но я вижу это сообщение

Извините, страница, которую вы ищете, не найдена.

Если я попытаюсь получить представление с этим маршрутом domian.com/author/page/{username}/{id} с этим параметром function index($username, $id), тогда я получу представление! Я не хочу показывать идентификатор в маршруте / URL. как я могу решить это?

Ответы [ 3 ]

0 голосов
/ 11 марта 2019

Я не вижу никакой ошибки в вашем коде.

Я предполагаю, что у вас есть route выше route, который вы разместили, который использует тот же URL, или вы используете resourceful route который также использует тот же URL.

0 голосов
/ 11 марта 2019

Насколько я понял ваш вопрос, вам нужны следующие маршруты для работы: -

domian.com/author/page/{username}
domian.com/author/page/{username}/{id}

Первый из них не работает для вас, но второй работает, если вы добавите function index($username, $id)

Следуйте приведенному ниже решению, это будет работать, или вы: -

Преобразуйте ваш маршрут в

Route::get('author/page/{username}/{id?}', 'FrontendAuthorController@index');

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

В соответствии с вышеизложенным добавьте $ id к параметрам функции: -

function index($username, $id)

С этим решением оба приведенных ниже URL будут работать

domian.com/author/page/rakesh
domian.com/author/page/rakesh/1
0 голосов
/ 11 марта 2019

дать название маршруту

Route::get('author/page/{username}', 'FrontendAuthorController@index')->name('author_page');

затем проверьте маршрут:

php artisan route: список

тест с функцией ниже:

public function index(Request $request,$username)
{
   return response($username);
}

затем обновите,

public function index($username)
{
    if(isset($username)){
       $user = BasicInfo::where('username', $username)->first(); 
       if($user){
           $author = User::findOrFail($user->user_id);
           return view('frontend.author', compact('author'));
       }else{
          // user not found , redirect to home page or 404
         abort(404);
       }
    }else{
          // $username not set , redirect to home page or 404
          abort(404);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...