Маршрутизация Laravel к контроллеру

Я пытаюсь направить несколько URL-адресов на одну и ту же функцию контроллера, используя часть этих URL-адресов в качестве параметров для метода внутри контроллера. Это основано на функциях маршрутизации Laravel Framework, я не прошу общей помощи в отношении htaccess/красивых URL-адресов и т. д. В частности, я хотел бы знать, как добиться этого в файле Laravel route.php.

URL-адреса, которые я пытаюсь маршрутизировать:

домен.com/статьи

домен.com/загрузки

домен.com/видео

домен.com/дайджесты

Теперь я знаю, что могу сделать что-то подобное в своем файле route.php:

Route::get(array('digests','articles','videos','downloads'), 'content@list_content');

И это приведет к этой функции в моем контроллере контента:

public function action_list_content(){}

Однако я бы хотел, чтобы функция выглядела так:

public function action_list_content($type){}

И все, что находится в первой части URL-адреса (например, дайджесты, статьи, видео или загрузки), должно быть отправлено в качестве параметра $type в метод action_list_content.

Это возможно?

Я должен отметить, что я бы предпочел не использовать (:any), так как это было бы очень жадно и принимало бы domain.com/anyrandomtext


person John Mellor    schedule 16.02.2013    source источник


Ответы (1)


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

Route::get('(articles|downloads|videos|digests)', 'content@list_content');
person Mike Rockétt    schedule 16.02.2013
comment
Ура, я знал, что это будет что-то простое, но в документах ничего не было. Это именно то, что нужно ура. - person John Mellor; 16.02.2013