web-dev-qa-db-ja.com

ZF2:ホスト名を含むZend Framework 2の完全なURL

私の見解では、完全なURLを描画する必要があります。このような:

_http://hostename.com/default/url
_

$this->url('default', array(1,2,3))を使おうとすると、_/index/get/_しか得られません。ホスト名を取得するZendメソッドはありますか、代わりに_$_SERVER['HTTP_Host']_を使用する必要がありますか?

13
Sergey Romanov

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

url($route, $params, $options)

したがって、次のようにすることができます。

$this->url('myroute', array('id' => 123), array('force_canonical' => true))
45
Jurian Sluiman

私はこれを見つけました 記事 いくつかの興味深い方法で:

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)次の違いに注意してください。

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
26
Ivan Buttinoni

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

<?php echo $this->serverUrl()?>
14
AlloVince

ベースURLをグローバルに設定する場合は、onBootstrapメソッドを使用して設定できます。

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

この場合、ナビゲーションヘルパーもこれを使用します。

現在のベースURLを取得するには、説明に従ってServerUrlヘルパーを使用します このスレッド内

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