2014-09-04 4 views
1

Ok поэтому у меня есть контроллер с действием и 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 

If I был доступ к этому маршруту, используя маршрут предварительного просмотра, то я хотел бы получить:

domain.com/index/preview/ 

Но если я не был он дал бы мне:

domain2.com/ 

, что я пытался

  • Установки контекста маршрутизатора внутри контроллера, но что изменения оленьей кожи маршруты генерироваться в веточке

ответ

2

Я понял это. Вместо использования path() я должен использовать url() и установить узел в контексте маршрутизатора:

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

Затем прут:

{{ url(basePath~'index') }} 
Смежные вопросы