Symfony2捆绑具有相同的路由

时间:2012-07-14 02:14:13

标签: symfony routing bundle

我在sf2中有两个捆绑包,每个捆绑包都有相同的路径。例如:/ blog

捆绑A

user_blog:
    pattern:  /blog
    defaults: { _controller: UserBlogBundle:Default:blog }

捆绑B

team_blog:
    pattern:  /blog
    defaults: { _controller: TeamBlogBundle:Default:blog }

并且使用会话参数我将知道哪个包将运行请求

抱歉,

我想根据会话参数

运行正确的包

例如

{{
if($Parameter ='A')
 run user_blog
else
 run team_blog
}}

我做到了:

//src/project/TestBundle
use Symfony\Component\Routing\RouteCollection;

$collection = new RouteCollection();
$req = $this->getRequest();
if($req->server->get('SERVER_NAME') == 'www.domainA.com')
$collection->addCollection($loader->import("@BundleABundle/Resources/config/routing.php"));
else
$collection->addCollection($loader->import("@BundleBBundle/Resources/config/routing.php"));
return $collection;

这是通常的吗?

2 个答案:

答案 0 :(得分:0)

在我看来,每条路线必须是唯一的。您应该考虑到这一点来构建您的应用程序。否则,我认为在访问这些路线时可能会出现一些随机行为。

答案 1 :(得分:0)

在2.2版本参数主机

上解决了这个问题

http://symfony.com/doc/master/components/routing/hostname_pattern.html

Bundle A

user_blog:
    pattern:  /blog
    host: a.example.com
    defaults: { _controller: UserBlogBundle:Default:blog }

Bundle B

team_blog:
    pattern:  /blog
    host: b.example.com
    defaults: { _controller: TeamBlogBundle:Default:blog }