3

わかりましたので、アクションとそれに関連付けられた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.',
    );
}

次に、ホストに応じて twig テンプレート内にルートを生成します。

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

プレビュー ルートを使用してこのルートにアクセスしていた場合、次のようになります。

domain.com/index/preview/

しかし、私がそうでなければ、それは私に与えるでしょう:

domain2.com/

私が試したこと

  • コントローラー内からルーターコンテキストを設定しますが、小枝で生成されたルートは変更されません
4

1 に答える 1

6

私はそれを考え出した。使用する代わりに、ルーターのコンテキストでホストpath()を使用して設定する必要があります。url()

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

次に小枝:

{{ url(basePath~'index') }}
于 2014-09-05T00:01:44.063 に答える