Поскольку вы постоянно добавляете все больше и больше маршрутов в Routes.php, он становится все больше и больше. Как вы их организуете?
Laravel routes.php становится большим
Ответ 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');
В этом нет ничего плохого. Таким образом, маршруты включаются в пакеты.
Ответ 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,...) в имя функции.
Объединение успокоительных методов со смарт-маршрутизацией - самый эффективный способ сохранить ваш код в чистоте и безопасности.