Laravel routes.php становится большим

Поскольку вы постоянно добавляете все больше и больше маршрутов в Routes.php, он становится все больше и больше. Как вы их организуете?

Solutions Collecting From Web of "Laravel routes.php становится большим"

Обычно я использую групповые маршруты (поскольку контроллеры имеют тенденцию иметь такой же тип фильтрации, если они связаны), чтобы организовать их, или если вы хотите / можете иметь файл с меньшими маршрутами, вы можете зарегистрировать свои контроллеры и выполнить дополнительные проверки валидации параметров URL внутри самого контроллера.

Я создал каталог / application / routes / и добавил туда файлы. Каждый файл представляет собой всего лишь набор маршрутов. Затем в routes.php я добавил следующий код, чтобы включить их все:

// Dynamically include all files in the routes directory foreach (new DirectoryIterator(__DIR__.DS.'routes') as $file) { if (!$file->isDot() && !$file->isDir() && $file->getFilename() != '.gitignore') { require_once __DIR__.DS.'routes'.DS.$file->getFilename(); } } 

даже после принятия всех лучших практик, упомянутых в других ответах, Т.е.: использование контроллера ресурсов, групп маршрутов и т. д.

Вы можете просто «включить» маршрут, используя старый способ. как упомянуто Крисом G в этом комментарии.

вы можете создать простую структуру каталогов и включить файлы маршрутов в файл route.php.

 ../myroutes --route-type-1.php --route-type-2.php 

В файле route.php

 include('myroutes/route-type-1.php'); 

В этом нет ничего плохого. Таким образом, маршруты включены в пакеты.

http://laravel.com/docs/packages#package-routing

На самом деле маршруты должны оставаться стройными. Просто переместите свой код на контроллеры и используйте маршруты для регистрации и перенаправления на них. Соглашение состоит в том, чтобы хранить один контроллер на файл, чтобы ваш код автоматически организовывался.

Взгляните на это

 // application/controllers/sample.php class Sample_Controller extends Base_Controller { public function action_index() { echo "Wellcome to the root" //www.testapp.com/sample } public function action_edit() { echo "Some editing functions here." //www.testapp.com/sample/edit } public function action_whatsoever() { echo "Put here whatever you like." //www.testapp.com/sample/whatsoever } } 

Маршрут действия контроллера можно зарегистрировать следующим образом:

 //application/routs.php Route::controller('admin::home'); 

Очень прямо вперед и удобно.

Обновить:

Вы можете также зарегистрировать все свои контроллеры с этой строкой для всего приложения автоматически:

 Route::controller(Controller::detect()); 

Или контроллер со всеми действиями:

 Route::controller(Controller::detect('yourcontroller')); 

В качестве альтернативы вы можете просто сохранить маршруты в разных файлах, а затем использовать эти файлы:

 Route::group(stuff,function(){ include __DIR__.DS.'routes1.php'; include __DIR__.DS.'routes2.php'; }); 

Это дает хороший и чистый способ сортировки дескриптора, когда есть слишком много кода, также вы можете просто упомянуть

 Route::controller(Controller::detect()); 

А затем структурируйте свои контроллеры соответственно:

 class Account_Controller extends Base_Controller { public function action_login() { //Login } public function action_logout() { ... } 

Если вам нужно передать параметры некоторым функциям:

  public function dosomething($input){ ... } 

Вы можете выполнить следующие функции:

  http://yourapp/account/login http://yourapp/account/logout 

Затем вы можете просто вызвать функцию, добавив параметры в URL-адрес,

  http://yourapp.account/dosomething/somedata 

Если вам нужны некоторые методы для защиты, добавьте их без действия_, чтобы они не могли быть доступны публике.

Кроме того, вы можете переключиться на успокоительные методы, которые в основном способ реагировать на какой-либо ввод, основанный на типе запроса, который вы получаете, например, когда вы получаете запрос «GET» на страницу входа в систему, что означает, что пользователь должен видеть экран входа в систему, когда вы получаете запрос «POST», который обычно означает, что пользователь публикует данные для входа и, соответственно, вы можете ответить, что поможет вам сократить количество функций для получения дополнительной информации о спокойных методах, которые вы можете прочитать в этой блестящей статье Райан Томаяко по адресу http://tomayko.com/writings/rest-to-my-wife

Чтобы использовать успокоительные методы, вам нужно указать restful на true, а затем добавить ключевое слово action перед именем функции.

 public $restful = true; public function get_login() { return View::make('login'); //This function is accessible using GET request to http://yourapp/login } public function post_login() { $data = Input::get(); //do something using the Input data //This function is accessible using a POST request to http://yourapp/login } 

Таким образом, вы можете устранить необходимость в другом маршруте для обработки и проверки учетных данных пользователей!

и если вы не хотите, чтобы определенные методы были доступны с помощью успокоительных методов, тогда просто не включайте ключевое слово action (get, post, …) в имя функции.

Сочетание спокойных методов с интеллектуальной маршрутизацией – самый эффективный способ сохранить ваш код в чистоте и безопасности.