у меня есть этот маршрут,
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 Output;
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.
Я могу с уверенностью сказать, что группа маршрутов работает как задумано, потому что у меня есть другие маршруты, и они работают. (пока они не используют привязку Route-Model ofc)
Я нашел еще 2 сообщения, посвященные той же проблеме, но они не помогли мне с этим.
Вы создали маршрутный символ субдомена, который принимает один параметр, который является {user}
и внутри вашей группы маршрутов вы принимаете другой параметр, который является {post}
если вы хотите использовать привязку модели маршрута, расположите параметры в соответствующем порядке. пример $user
,$post
Так что ваш контроллер должен выглядеть так
public function show($user,Post $post){
//method logic
}
Других решений пока нет …