php - 如何将变量传递给 Symfony 中的路由默认值?

标签 php symfony routing

我有一个包含多个品牌(子域)的 Symfony2 项目。每个子域应使用相同的站点功能和相同的路由(具有不同的主机名)。因此,我想将路由路径中的子域设为变量。现在看起来像:

mybundle_route:
    resource: "@MyProjectBundle/Controller/"
    type:     annotation
    prefix:   /
    host:     "{subdomain}.%base_host%"
    requirements:
        subdomain: sub1|sub2

并且路由本身有效。但是如果我尝试生成一些路由(例如在 Twig 中),我会收到以下错误,因为没有设置子域变量:

Some mandatory parameters are missing ("subdomain") to generate a URL for route "company_route".

我不想将参数添加到项目中的每个 path() 函数。 如果我像这样添加默认值,它对一个子域来说是完美的:

defaults:
    subdomain: sub1

但是其他子域的路由是错误的。它也不适用于

defaults:
    subdomain: "%subdomain%"

我所需要的只是将 %subdomain% 变量传递给默认值或将其设置在 Controller 构造函数中的某个位置。但我找不到它是怎么回事。如果有任何帮助,我将不胜感激。

最佳答案

如果没有更好的解决方案,您可以尝试在配置文件中设置 %subdomain% 参数:

  1. 在配置文件夹中创建 subdomain_parameter.php
  2. 在此文件中,您可以访问 $container,因此您可以从 url 手动检索当前子域并将其传递给容器。
  3. 在config.yml中导入subdomain_parameter.php

关于php - 如何将变量传递给 Symfony 中的路由默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718209/

相关文章:

php - 在 PHP 中处理 cURL

php - 从中间件访问路由前缀中的 URL 参数

routing - 如果子域存在于 rails 中,则单独路由

Symfony2 : How to log user manually?

javascript - 在引用主页上加载文件 Javascript

php - Symfony 从路由中删除前三个字符

php - 在不在 ReflectionFunction->invoke() 的对象上下文中时使用 $this

Symfony2 和 Twig 转储问题

routing - 将查询字符串中的参数值映射到DTO属性

wordpress - 如何写没有标题的wp_mail