我正在尝试通过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)
来获取视图,那么我得到了视图!我不想在路线/网址中显示ID。我该如何解决?
答案 0 :(得分:1)
提供路由名称
Route::get('author/page/{username}', 'FrontendAuthorController@index')->name('author_page');
然后检查路线:
php artisan route:list
使用以下功能进行测试:
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);
}
}
答案 1 :(得分:1)
我看不到您的代码中有任何错误。
我的猜测是,您发布的route
上方有route
,并且使用相同的网址,或者您使用的resourceful route
也使用相同的网址。
答案 2 :(得分:0)
据我所知,您需要以下路线才能工作:-
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,则可以选择使用它。
根据上述操作,也将$ id添加到函数参数:-
function index($username, $id)
使用此解决方案,以下两个网址都可以使用
domian.com/author/page/rakesh
domian.com/author/page/rakesh/1