2015-09-15 4 views
2

Я хотел бы сделать что-то вроде этого:Symfony маршрутизация: матч ничего после первого узла

/** 
* @Route("^/secured") <-- this would not work, just an example 
*/ 
public function securedAction(){ 
    //return secured JS frontend 
} 

и имеет матч Symfony любых маршрутов (.com/secured/something; .com/secured/anything/else) к этому действию, без определения всех маршрутов вручную.

Поддерживает ли Symfony это? Я не могу придумать условия для поиска этого.

Как я могу совместить и направлять это действие контроллера без определения всех маршрутов вручную, исходя из первого узла (/secured)?

ответ

4
/** 
* @Route("/secured/{anything}", name="_secured", defaults={"anything" = null}, requirements={"anything"=".+"}) 
*/ 

public function securedAction($anything){ 
    //return secured JS frontend 
} 

name - только название маршрута.

defaults - здесь вы можете установить значение по умолчанию параметра, если вы не обеспечивают параметр в URL: /secured/

requirements - требования для параметра (ов), в этом случае anything может содержать косую черту: http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html, но вы должны обрабатывать его в действии контроллера себя:

, например, если вы предоставите URL: /secured/anything/another_thing/one_more_thing

вы можете получить все параметры, explode('/', $anything);

и результаты будут:

array:3 [ 
    0 => "anything" 
    1 => "another_thing" 
    2 => "one_more_thing" ] 

Просто все после того, как /secured/ будет один параметр $anything.

+0

Я собираюсь попробовать это, можете ли вы немного объяснить, что здесь происходит? –

+0

Отметьте мои изменения, я надеюсь, что это достаточно ясно :) – malcolm

+0

Beautiful! Спасибо. –