在 Symfony Routing Annotation 中指定自定义数据

Specifying custom data in Symfony Routing Annotation

我正在使用 symfony 5,并将路由指定为注释。所以现在我需要传递一些额外的数据和路线。它不是路由的一部分,但我需要为每个路由设置一个值。所以我使用选项对象 options={"label"="COMMMON_CLIENTMANAGEMENT"}.

指定如下路线

它没有产生错误。所以我不确定它是否有效。我也无法从任何路由服务中检索数据。

 *   
 * @Route("/client/list", name="client_list", options={"label"="COMMMON_CLIENTMANAGEMENT"})
 * @return \Symfony\Component\HttpFoundation\Response
 */   

我想根据这些数据创建一个 html,就像 <li href="{{path(route)}}">{{ label }}</li>

更新:

所以我做了更多的实验,因为我收集的意图是在列出路线时使用 'label' 数据。我认为使用默认部分仍然更容易,但您可以使用路由集合访问选项信息:

class PlayCommand extends Command
{
    protected static $defaultName = 'app:play';

    private RouterInterface $router;

    public function __construct(RouterInterface $router)
    {
        parent::__construct();
        $this->router = $router;
    }
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $routes = $this->router->getRouteCollection();
        $route = $routes->get('index');
        $label = $route->getOption('label');

不确定是否有一种方法可以直接从 twig 内部获取路由,但是为此编写一个 twig 扩展很容易。

原答案:

defaults 部分用于提供附加信息。

我很难在选项部分找到文档。 blog article 讨论了一些新选项,例如 utf-8 支持。我认为选项部分由路由器使用。不积极。

    /**
     * @Route("/", name="index", options={"label"="COMMMON_CLIENTMANAGEMENT"})
     */