【问题标题】:Routing not done in controller redirect Symfony2 - dynamic routing在控制器重定向 Symfony2 中未完成路由 - 动态路由
【发布时间】:2015-02-18 06:08:06
【问题描述】:

这里是问题的上下文:我想构建一个 Symfony2 的多站点安装。一方面拥有每个站点通用的管理员和内容类型,但每个站点的模板有所不同

因此,我需要针对每个访问的站点进行路由。假设我们有 2 个站点 sub1.site.com 和 sub2.site.com,对于相同的模式“/”,我希望能够以不同的方式路由每个子站点的请求。

测试的第一个解决方案:使用路由系统的“主机”,如此处 (Host routing in Symfony)。 像这样实施它没有用

routingFirstSite:
    resource: "@BundleName/Resources/config/routing1.yml"
    host: "sub1.site.com"
    prefix: /

routingSecondSite:
    resource: "@BundleName/Resources/config/routing2.yml"
    host: "sub2.site.com"
    prefix: /                             ==>*(added after 1st comment)

==> 这个解决方案不起作用,它会加载第二个不考虑使用的主机...

第二个解决方案:在监听 kernel.request 事件时使用动态路由,如下解决方案:Symfony custom/dynamic router

完美运行。然后,我将管理员的路由直接包含到 routing.yml 文件中,并动态加载“站点”路由。

但是

在提交任何表单以创建/编辑/删除站点中的任何内容时,管理员控制器会返回以下返回错误 500(找不到路由“索引”)

return $this->redirect($this->generateUrl('index'));

(不用说,'index' 路由是在所有站点的所有 sub_routing.yml 文件中定义的)。

为了了解请求中的内容以确保我正确到达,我修改了以下内容:

var_dump($this->getRequest()->attributes->all());
return $this->redirect($this->generateUrl('index'));

奇迹般地,我被重定向到了网站的索引!

我的问题是:这里的机制是什么?为什么它首先不起作用,而在第二个却很好?我应该怎么做才能让它在第一种情况下工作?

非常感谢您的宝贵时间,

【问题讨论】:

  • 您的第一个解决方案应该可以正常工作,可能是因为您错过了 routingSecondSite 中的前缀
  • 嗨,谢谢,但这是复制粘贴的错误,因为我的 routing.yml 文件中存在前缀参数...(我已经更新了问题)

标签: symfony routing routes


【解决方案1】:

在我的项目中,我总是像这样添加一个匹配主机的要求:

我在 parameters.yml 中使用了一个变量和一个参数,例如 %your_host%

routingFirstSite:
    resource: "@BundleName/Resources/config/routing1.yml"
    prefix:   /
    host: "{your_host}"
    requirements:
        your_host: %your_host%


routingFirstSite:
    resource: "@BundleName/Resources/config/routing2.yml"
    prefix:   /
    host: "{your_second_host}"
    requirements:
        your_second_host: %your_second_host%

在parameters.yml中你喜欢:

your_host: sub1.site.com
your_second_host: sub2.site.com

不带引号 你应该试一试,应该可以,如果不行,请告诉你正在运行哪个 symfony2 版本

【讨论】:

  • 谢谢。我刚刚尝试过,在清除缓存后,不幸的是它无法正常工作。我正在开发 Symfony 2.5.7
  • 你好,这一切看起来很奇怪......可能有其他设置我忘记放在routing.yml以外的地方了吗? (我试过带引号和不带引号)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
相关资源
最近更新 更多