2016-11-08 28 views
1

symfony 2.7に、現在のポート番号を持つ現在の絶対URLを返す関数がありますか?Symfony2で現在のポート番号を持つ現在のURLを取得する方法はありますか?

+0

あなたはこれを取得しようとしていますか?コントローラのアクションの中で? – Chausser

+0

@Chausserはい、私はPayPalのbuynowボタンがあるテンプレートで渡したいと思います。 URLはボタンの戻りURLになります –

答えて

1

絶対URLを生成するには、ポートを含める必要があります。

use Symfony\Component\Routing\Generator\UrlGeneratorInterface; 
... 

public function indexAction(Request $request) 
{ 
    $link = $this->generateUrl(
     'route_name', [ 
      'route'=>'params' 
     ], 
     UrlGeneratorInterface::ABSOLUTE_URL 
    ); 

    return $this->render('template', [ 
     'link' => $link; 
    ]); 
} 
+0

解決済み、ありがとうございます。私は、$ url = "www.example"。$ port。$ port。/ someAction "のように自分でURLを構築しようとしていました。絶対URLを生成することは絶対に正しい方法です。ありがとう! –

2

Requestオブジェクトには、URIとポートの両方が保持されます。だから、あなたがコントローラではない場合、あなたはその後、マスター要求

$requestStack->getMasterRequest()->getUri(); 
+0

私はコントローラ 'indexAction'にいるとしましょう。ここからPHPテンプレートに、他のコントローラを参照するURLを渡したいとします。 'nextAction'は、現在のユーザーポート番号を含んでいます。 –

0

からあなたのURIとポートをフェッチあなたのクラスでRequestStackを注入するようにしてください

public function indexAction(Request $request) 
{ 
    $uri = $request->getUri(); 
    $port = $request->getPort(); 
} 

作ることができるコントローラ内からあなたの小枝のテンプレートで直接{{ app.request.uri }}を使用することができます。

例:現在のURIがhttp://www.example.com:8080/page?q=test&p=2の場合、{{ app.request.uri }}は同じ文字列を返します。

関連する問題