Маршрут Laravel идет к контроллеру, но не отображает данные - PullRequest
0 голосов
/ 07 апреля 2019

Я создал следующий маршрут

Route::resource('posts','PostController');

Сейчас я пытаюсь создать собственный маршрут

Route::get('posts/trashed','PostController@trashed')->name('posts.trashed');

При нажатии на ссылку posts/trashed она переходит к PostController@trashed, но контроллер показывает пустую страницу без ошибок.

Так изменил пользовательский маршрут на

`Route::get('post/trashed','PostController@trashed')->name('posts.trashed');

просто изменив posts/trashed на post/trashed, и контроллер работает нормально.

Может кто-нибудь объяснить, в чем проблема.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019

Маршрут ресурса имеет несколько собственных маршрутов.

Итак, этот маршрут:

Route :: ресурс ( 'сообщения', 'PostController');

содержит этот маршрут:

Route :: get ('posts / {post_id}', PostController @ show)

То есть конфликт с вашим маршрутом

Route :: получить ( 'сообщений / громил', 'PostController @ громил') -> имя ( 'posts.trashed');

Решение 1:

перенести ваш маршрут выше ресурса

Я имею в виду:

Route :: получить ( 'сообщений /, удаленные', 'PostController @ громил') -> имя ( 'posts.trashed'); <- первый Route :: ресурсные ( 'сообщений', 'PostController'); </p>

Решение 2:

Как вы упомянули, используйте другой URL (например, post / trched)

Решение 3:

Добавить исключение для ресурса.

Route :: resource ('posts', 'PostController') -> кроме ([ 'шоу' ]);

0 голосов
/ 07 апреля 2019

Разобрался.Решение было спрятано глубоко внутри Документации Laravel.https://laravel.com/docs/5.0/controllers#restful-resource-controllers

Если возникает необходимость добавить дополнительные маршруты к контроллеру ресурсов помимо маршрутов ресурсов по умолчанию, вы должны определить эти маршруты до того, как ваш вызов к Route::resource:

Изменение порядка решитпроблема.

Route::get('posts/trashed','PostController@trashed')->name('posts.trashed');
Route::resource('posts','PostController');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...