如果路由组中定义了路由,则Laravel Route-Model绑定不起作用

时间:2017-09-11 17:29:53

标签: php laravel

我有这条路线,

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)

我发现另外两篇文章解决了同样的问题,但他们并没有帮助我解决这个问题。

1 个答案:

答案 0 :(得分:2)

您创建了一个子域通配符路由,它接受一个参数{user},如果要使用路由模型绑定,则在路由组中接受另一个参数{post}参数以适当的顺序排列。示例$user$post

所以你的控制器应该看起来像

public function show($user,Post $post){
  //method logic
}