Маршруты Laravel — можно ли их вообще не использовать?

Я новичок в Laravel 3.x с опытом работы с CI.

Я очень хорошо знаком с использованием контроллеров, а не маршрутов, и у меня возникают проблемы с использованием контроллеров в Laravel.

Например: допустим, у меня есть home_controller и действие «о». Моя проблема в том, что я могу получить доступ к действию «о» только путем установки маршрута, который указывает на него, что я считаю нежелательным.

Есть ли способ заставить работать действие «о» без установки маршрута?


person darksoulsong    schedule 02.04.2013    source источник


Ответы (4)


В laravel все можно сделать с помощью маршрутов и/или контроллеров.

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

В любом случае, если вы хотите использовать контроллеры (что вполне приемлемо), вам нужно зарегистрировать их в своем routes.php с помощью Route::controller('yourcontroller'), прежде чем вы сможете их использовать.

person Adrenaxus    schedule 03.04.2013
comment
Спасибо за ссылку на ту статью. Это было очень полезно. - person darksoulsong; 10.04.2013

Все должно быть маршрутизировано в Laravel. Но вам не нужно вручную маршрутизировать каждый метод. Вы можете сделать что-то вроде Route::controller('admin').

См. здесь: http://laravel.com/docs/routing#controller-routing

person JeffreyWay    schedule 02.04.2013
comment
Вы также можете использовать Route::controller(Controller::detect()), но это не рекомендуется, так как это может привести к ошибке, в зависимости от вашей настройки. - person Mike Rockétt; 03.04.2013

Мне нравится решение Майка Энтони. Когда вы используете только контроллеры, этот метод обнаружения — это все, что вам нужно сделать — он автоматически зарегистрирует все ваши контроллеры. На данный момент лучшее решение без помощи рук. Обычная регистрация контроллера, как уже упоминали ребята, это:

Route::controller('controllername');   
person Hexodus    schedule 03.04.2013
comment
Controller::detect() не следует пропагандировать как решение. Это не так и вызывает много проблем. Ручная регистрация, как вы продемонстрировали, является гораздо лучшим подходом. - person Jason Lewis; 06.04.2013

Вы должны зарегистрировать все контроллеры, как в примере выше. Это одна строка кода на контроллер, и это правило. Но если у вас есть статическая страница или действие (страница) входа в систему, хорошей практикой является создание контроллера маршрута (функция анонимуса), а не классического контроллера (в папке контроллеров).

person spezia    schedule 03.04.2013