Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

Я создал каталог/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();
    }
}

Ответ 3

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

Вы можете просто "включить" файлы маршрутов в старую форму. как упомянуто Крисом 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

Ответ 4

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

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

//  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');

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

Update:

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

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

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

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

Ответ 5

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

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
}

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

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

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