Ларавел 5.6. Маршрутная модель bindung
Здравствуйте, я пытаюсь создать собственный пакет laravel, он имеет два ресурса Controller, которые имеют один контроллер и модель Post
Route::resource('posts', \vendor\package\Controllers\PostsController::class);
Route::resource('categories', \vendor\package\Controllers\PostsController::class);
Мой метод в PostsController
является show(Post $post)
Если я открою ссылку http://localhost/posts/1, атрибут элемента $post
не пусто в show
метод.
Но когда я открываю ссылку http://localhost/categories/1, атрибут элемента $post
пустой.
Как я могу получить данные Post для resource
categories
?
PS разница между постами и категориями это значение колонки post_type
в БД.
2 ответа
Вы можете определить, какой параметр маршрута будет назван для сгенерированных маршрутов при использовании маршрутизации ресурсов.
Это должно быть единственное изменение, которое вам нужно сделать:
Route::resource(
'categories',
\vendor\package\Controllers\PostsController::class,
['parameters' => ['categories' => 'post']]
);
Теперь параметр маршрута post
:
GET categories/{post}
GET categories/{post}/edit
...
Laravel 5.6 Docs - Контроллеры - Параметры маршрута именования ресурсов
Добавлять Route::model('categories', App\Post::class);
к boot()
метод в вашем
./app/Providers/RouteServiceProvider.php