Laravel | Route :: resource vs Route :: controller

Опубликовано: 2 Декабря, 2021

В 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.