Ларавел 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 для resourcecategories?

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

источник

Другие вопросы по тегам