Parameters Symfony,Twig:持久路由参数
我正在用Symfony3制作一个应用程序。应用程序的一部分由动态子域分割——子域由slug表示Parameters Symfony,Twig:持久路由参数,parameters,routes,twig,slug,symfony,Parameters,Routes,Twig,Slug,Symfony,我正在用Symfony3制作一个应用程序。应用程序的一部分由动态子域分割——子域由slug表示 subdomains: host: "{slug}.{domain}" default: slug: example ... 当在本地运行时,此类路由的示例将是,例如http://a.localhost 当我使用{{url('route')}或{{path('route')}}在Twig中创建链接时,子域总是被遗忘,参数中的slug变成默认示例,总
subdomains:
host: "{slug}.{domain}"
default:
slug: example
...
当在本地运行时,此类路由的示例将是,例如http://a.localhost
当我使用{{url('route')}
或{{path('route')}}
在Twig中创建链接时,子域总是被遗忘,参数中的slug变成默认示例,总是生成routeshttp://example.localhost
有没有一种方法可以隐式复制参数,或者将一些参数标记为持久的,这样我就不必像这样使所有链接都包含slug{{url('route',{slug':slug}}},以便留在子域上
谢谢我创建了一个用于在子域内生成链接的
如我在问题中提到的,我更希望能够使一些参数“持久化”。这些将通过相对路径隐式携带,但可能通过显式参数选择为空。如果这是不可能的,我认为这个更好的选项比手动添加参数和最佳选项到目前为止。
扩展类
/**
* ApplicationExtension constructor.
*
* @param Router $router
* @param RequestStack $requestStack
*/
public function __construct(Router $router, RequestStack $requestStack)
{
$this->router = $router;
$this->requestStack = $requestStack;
}
public function getFunctions()
{
return [
new \Twig_SimpleFunction('domainPath', [
$this,
'domainPath'
]),
];
}
public function domainPath($route_name, $params = [])
{
if (!array_key_exists('slug', $params)) {
$params['slug'] = $this->requestStack->getCurrentRequest()->attributes->get('slug');
}
return $this->router->generate($route_name, $params);
}
public function getName()
{
return 'application_extension';
}
注册服务(DI和标签)
在模板中使用
{{ domainPath('route_name') }}
探查器对“布线”面板上的“布线参数”有何说明?(/app_dev.php/_profiler/latest?panel=router)@TobiasXy slug参数按预期在“路由参数”中列出,并带有_locale和domain参数。没有提供其他信息。
{{ domainPath('route_name') }}