如何更改树枝模板路由生成中使用的主机?

时间:2014-09-04 23:39:41

标签: symfony twig symfony-routing

好的,我有一个带有动作的控制器和与之相关的2条路线:

/**
 * @Route("/index/preview/", name="mybundle.preview_index")
 * @Route("/", name="mybundle.index")
 * @Template
 */
public function indexAction(Request $request)
{
    $preview = ($request->get('_route') === 'mybundle.preview_index');
    $host = $request->getHttpHost(); //domain.com
    if(!$preivew){
        $host = 'domain2.com';
    }
    return array(
        'preivew' => $preview,
        'host' => $host,
        'basePath' => $preview?'mybundle.preview_':'mybundle.',
    );
}

然后我想在树枝模板中生成一条路线,具体取决于主机:

{{ path(basePath~'index') }}
//Then somehow pass the host to this so that i get the intended domain

如果我使用预览路线访问此路线,那么我会得到:

domain.com/index/preview/

但如果我没有,它会给我:

domain2.com/

我尝试过什么

  • 从控制器中设置路由器上下文,但这不会更改在twig中生成的路由

1 个答案:

答案 0 :(得分:4)

我明白了。而不是使用path()我必须使用url()并在路由器的上下文中设置主机:

if(!$preview){
    $context = $this->get('router')->getContext();
    $context->setHost($host);
}

然后树枝:

{{ url(basePath~'index') }}