Я читал документы на веб-сайте Laravel, в Stack Overflow и в Google, но до сих пор не понимаю разницу между Route::resource
и Route::controller
.
В одном из ответов говорится, что Route :: resource был для crud. Однако с Route :: controller мы можем выполнить то же самое, что и с Route :: resource, и мы можем указать только необходимые действия.
Они похожи на братьев и сестер:
Route::controller('post','PostController');
Route::resource('post','PostController');
Как мы можем выбрать, что использовать? Что такое хорошая практика?
Ответы:
Контроллер ресурсов RESTful
RESTful контроллер ресурсов устанавливает некоторые маршруты по умолчанию для вас и даже имена им.
Дает вам эти названные маршруты:
И вы бы настроить свой контроллер примерно так (действия = методы)
Вы также можете выбрать, какие действия будут включены или исключены следующим образом:
Документация RESTful Resource Controller
Неявный контроллер
Неявный контроллер является более гибким. Вы перенаправлены на методы вашего контроллера на основе типа и имени HTTP-запроса. Однако для вас не определены имена маршрутов, и он будет перехватывать все подпапки для одного и того же маршрута.
Приведет вас к настройке контроллера с помощью своего рода схемы именования RESTful:
Документация неявного контроллера
Хорошей практикой является использование того, что вам нужно, согласно вашим предпочтениям. Лично мне не нравятся неявные контроллеры , потому что они могут быть грязными, не дают имен и могут сбивать с толку при использовании
php artisan routes
. Обычно я использую контроллеры RESTful Resource в сочетании с явными маршрутами.источник
resource.edit
это отображение редактируемого вида, в основном, формы для редактирования существующего ресурса.resource.edit
и,resource.create
как правило, для пользовательского интерфейса ... рендеринга представления с HTML-формами. Эти формы будут PUT / POSTresource.update
иresource.store
соответственно. Если вы этого не делаете, вы можете просто игнорировать их и избавиться от методов edit () и create () в вашем контроллере.Для метода контроллера маршрута мы должны определить только один маршрут. В методе get или post мы должны определить маршрут отдельно.
И метод ресурсов используется для создания нескольких маршрутов для обработки различных действий Restful.
Вот документация Laravel об этом.
источник