parameters - 交响乐, Twig : Persistent route parameters

标签 parameters routes twig slug symfony

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

subdomains:
     host: "{slug}.{domain}"
     default:
           slug: example
     ...

当在本地运行时,此类路线的示例如下: http://a.localhost

当我在 Twig 中使用 {{ url('route') }}{{ path('route') }} 创建链接时,子域名总是被忘记,参数中的slug会变成默认的example,总是使路由http://example.localhost

有没有办法隐式复制参数,或将某些参数标记为持久,这样我就不必使所有链接都包含 slug 像这样 {{ url(' route', {'slug' : slug}) }},以便留在子域上?

谢谢

最佳答案

我创建了一个TwigExtension用于在子域内生成链接。

我希望如果可以使某些参数“持久化”,正如我在问题中提到的那样。这些将隐式地跨相对路径进行,但可能通过显式参数选择而清空。如果这是不可能的,我认为这是比手动添加参数更好的选择,也是迄今为止最好的选择。

扩展类

/**
 * 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 和标签)

application.twig.application_extension:
        class: ApplicationBundle\Twig\ApplicationExtension
        arguments: ["@router", "@request_stack"]
        public: false
        tags:
            - { name: twig.extension }

在模板中使用

{{ domainPath('route_name') }}

关于parameters - 交响乐, Twig : Persistent route parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35894548/

相关文章:

parameters - 对 Dart 参数使用 final

带有 Post 参数的 PHP 重定向

javascript - 如何从 ui-router statechange 返回 $state.current.name

symfony - 覆盖 Symfony2 中的单一路由

php - Symfony - twig - 自动加载器预期类

parameters - 无法传递从命令行参数解析的函数参数

android - 如何在 Android 中调用带有参数的 web 服务?

ruby-on-rails - Rails 使用复杂参数名称命名路由

php - 如何为 Twig 定义全局变量

javascript - 设置测验系统