2012-06-14 10 views
13

私の見解では完全なURLを描く必要があります。このように:私は$this->url('default', array(1,2,3))を使用しようとするとZF2:Zend Framework 2ホスト名を含む完全なURL

http://hostename.com/default/url 

私だけ/index/get/を取得します。ホスト名をhetするためのZendメソッドはありますか?代わりに$_SERVER['HTTP_HOST']を使用する必要がありますか?

答えて

13

zendビューで完全なURLを作成するには、Zend \ View \ Helper \ ServerUrlがあります。 ビューテンプレートで以下のコードを試してください。

<?php echo $this->serverUrl()?> 
+3

。しかし、誰かがコントローラでそれを行う方法を探しているなら、ここには '$ this-> getRequest() - > getServer( 'HTTP_HOST')です。 $ this-> url() - > fromRoute( 'carrinho/compra-efetuada') – vinigarcia87

42

ルータでは、オプションforce_canonicalを使用できます。すべてのルータのオプションは、URLヘルパーの三番目のパラメータに入る:

url($route, $params, $options) 

ですからので、このような何かすることができます

$this->url('myroute', array('id' => 123), array('force_canonical' => true)) 
+0

この機能はドキュメントのどこにも参照されていません。たとえばhttpsを使用するように強制する方法も知っていますか?私はパラメータやオプションとして 'scheme' => 'https'のようなものを使用すると予想されますが、それは簡単ではないようです。 –

+0

@DominicWatsonスキームを設定するオプションがあるかどうかわかりません。私はこの例のようにZend \ Url \ Httpを使ってhttps urlを作成します:http://stackoverflow.com/questions/20122535/how-to-forced-https-instead-of-http-after-user-login-in- zend-framework2/20125800#20125800 –

22

は、私はいくつかの興味深い方法でこれarticleが見つかりました:

1パラメータなしのは空の配列を使用します。

// Using a route with the name "register" and the route "/register" 
echo $this->url('register', array(), array('force_canonical' => true)); 
// Output: http://mydomain.com/register 

2)ノートとの違い:あなたは、グローバルベースURLを設定したい場合は

echo $this->serverUrl(); 
// Output: http://mydomain.com 

// Current URL: http://mydomain.com/register 
echo $this->serverUrl(true); 
// Output: http://mydomain.com/register 

3)は、ルート

// The "register" route has the following route: /register 
echo $this->serverUrl($this->url('register')); 
// Output: http://mydomain.com/register 
+0

ありがとうございます。第3の方法 – Athlan

0

から始まりますあなたはonBootstrapメソッドを使ってそれを行うことができます:

$e->getApplication()->getMvcEvent()->getRouter()->setBaseUrl($baseUrl); 

この場合、ナビゲーションヘルパーも使用します。 in this threadを説明するように

は、現在のベースURL使用SERVERURLヘルパーを取得するには、次の質問を約ビューの完全なURLを生成している

$serverUrl = $e->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl'); 
$baseUrl = $serverUrl->__invoke(); 
+0

"$ serverUrl - > __ invoke();" ?? "__invoke()"を "$ serverUrl()"として実行できないのですか? – Zippp

関連する問題