Laravel | Route :: resource vs Route :: controller
В Laravel действиями Route можно управлять любым из следующих двух методов, либо с помощью метода Route :: resource , либо с помощью метода Route :: controller . Но у них обоих есть свои отличия.
Route :: resource: Метод Route :: resource - это контроллер RESTful, который генерирует все основные маршруты, необходимые для приложения, и может быть легко обработан с помощью класса контроллера. Он принимает два аргумента, где первый - это базовый URI входящего запроса (унифицированный идентификатор ресурса), а второй - имя класса контроллера, который используется для обработки запроса. С помощью этого метода мы получаем имена маршрутов и путь, определенные по умолчанию с 7 различными действиями, которые требуются для любого приложения.
Примечание. Чтобы получить список созданных маршрутов, мы должны использовать команду «PHP artisan route: list» в командной строке.
Пример:
- routes.php
Route :: resource ('gfg', 'GeeksforGeeksController');
- Выход:
Route :: controller: метод Route :: controller - это неявный контроллер, который также принимает два аргумента и аналогичен методу Route :: resource, т.е. первый - это базовый URI входящего запроса (унифицированный идентификатор ресурса), а второй - имя класса для контроллер, который используется для обработки запроса. С помощью этого метода у нас есть небольшая гибкость в том, как мы определяем имена наших маршрутов. По умолчанию имена маршрутов не определены, как в случае с методом Route :: resource.
Примечание. Чтобы получить список созданных маршрутов, вы должны использовать команду «PHP artisan route: list» в командной строке.
Пример:
- routes.php:
Route :: controller ('gfg', 'GeeksforGeeksController');
- GeeksforGeeksController.php: когда в файле класса контроллера не определен метод, мы получаем результат, как показано ниже:
класс GeeksforGeeksController расширяет контроллер { // Обрабатываем запрос }
- Выход:
- GeeksforGeeksController.php: когда мы определяем методы get и post в файле класса контроллера, мы получаем результат, как показано ниже.
класс GeeksforGeeksController расширяет контроллер { публичная функция getGeek () { // Обработка запроса на получение } публичная функция postGeek ($ id) { // Обрабатываем почтовый запрос } }
- Выход:
Перед указанием любого из маршрутов вы должны создать класс контроллера, который вы хотите использовать в маршруте. Вы можете сделать это с помощью простой команды мастера, которая называется «PHP artisan make: controller GeeksforGeeksController», то есть «PHP artisan make: controller». Метод Route: Controller поддерживался до Laravel 5.1 и больше не поддерживается в последующих версиях. Итак, в более поздних версиях Laravel мы используем метод Route :: resource.