在Symfony路由中使用类常量

Prz*_*mek 9 php routing symfony

我有一个用注释定义的路由,如下所示:

/**
 * @Route("/doSomething/{param}", name="route_name", defaults={"param"=1})
*/
Run Code Online (Sandbox Code Playgroud)

是否可以使用类常量而不是这个硬编码的'1',如:

/**
 * @Route("/doSomething/{param}", name="route_name", defaults={"param"=MyBundle:MyEntity:DEFAULT_TYPE})
*/
Run Code Online (Sandbox Code Playgroud)

(当然上面的失败)

Ger*_*rry 18

是的,你可以在注释中使用常量,只需使用类的FQN:

/**
 * @Route("/doSomething/{param}", name="route_name", defaults={"param"=Namespace\MyBundle\MyEntity::DEFAULT_TYPE})
*/
Run Code Online (Sandbox Code Playgroud)

如果您在同一名称空间中,或者导入包含常量的类,则可以缩短它:

use Namespace\MyBundle\MyEntity;

/**
 * @Route("/doSomething/{param}", name="route_name", defaults={"param"=MyEntity::DEFAULT_TYPE})
*/
Run Code Online (Sandbox Code Playgroud)

  • 那么你可以在PHP代码中导入类来缩短它. (3认同)
  • @DamagedOrganic 您的解决方案并不是真正“有效”。您将常量作为文字字符串。像这样插入不带引号的常量 `name=MyEntity::ROUTE_NAME` 实际上会起作用 (2认同)