我有这条路线,
Route::get('/posts/show/{post}', 'PostsController@show');
//corresponding controller method
public function show(Post $post){
//method logic
}
当路由在Route :: group之外定义时,这非常有效。
但这失败了;
Route::group(['domain' => '{user}.localhost.com'], function () {
...
Route::get('/posts/show/{post}', 'PostsController@show');
...
}
Erro输出;
Argument 1 passed to App\Http\Controllers\PostsController::show() must be an instance of App\Post, string given
要查看作为参数传递的内容,我将PostsController :: show()修改为下面的内容;
public function show($post){
return $post;
}
//it returned the subdomain part of the url.
我可以肯定地说路线组正在按预期工作,因为我有其他路线并且它们有效。 (只要他们不使用路由模型绑定c)
我发现另外两篇文章解决了同样的问题,但他们并没有帮助我解决这个问题。
答案 0 :(得分:2)
您创建了一个子域通配符路由,它接受一个参数{user}
,如果要使用路由模型绑定,则在路由组中接受另一个参数{post}
参数以适当的顺序排列。示例$user
,$post
所以你的控制器应该看起来像
public function show($user,Post $post){
//method logic
}