在 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"})
*/
我正在使用 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"})
*/