Parameters Symfony,Twig:持久路由参数

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变成默认示例,总

我正在用Symfony3制作一个应用程序。应用程序的一部分由动态子域分割——子域由slug表示

subdomains:
     host: "{slug}.{domain}"
     default:
           slug: example
     ...
当在本地运行时,此类路由的示例将是,例如
http://a.localhost

当我使用
{{url('route')}
{{path('route')}}
在Twig中创建链接时,子域总是被遗忘,参数中的slug变成默认示例,总是生成routes
http://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') }}