необязательные параметры в маршрутах, определенных через аннотации

Есть ли более элегантный способ определить необязательные параметры в аннотированных маршрутах, чем определить 2 аннотации?

Вот как я это сделал:

/**
*
* @Route("/view/{lang}/{file}", name="legacy_translation_view_file")
* @Route("/view/{lang}", name="legacy_translation_view")
* @Template()
*/
public function viewAction($lang,$file=null)
{
   ...
}

я видел, что класс аннотации имеет поле с именем «по умолчанию», но я не уверен в синтаксисе

спасибо


person room13    schedule 08.08.2011    source источник


Ответы (1)


У Symfony есть страница на @Route:

Например, вы можете попробовать.

/**
 * @Route("/{id}/{lang}/{file}", requirements={"id" = "\d+"}, defaults={"file" = null})
 */
public function showAction($id, $lang, $file)
{
}

Если null не работает, попробуйте пустую строку.

person Tjorriemorrie    schedule 09.08.2011
comment
как всегда, это только вопрос знания, где найти информацию. Я никогда раньше не смотрел ссылку на пакет. спасибо - person room13; 18.08.2011
comment
Я собирался спросить то же самое... но если у вас есть несколько нулевых или пустых строк по умолчанию, он создает такие пути, как /1/en///1234/23, и Symfony жалуется на отсутствие соответствующего маршрута. - person Hades; 14.11.2011