ZF2:Zend Framework 2完整URL,包括主机名

时间:2012-06-14 02:23:43

标签: zend-framework2

在我看来,我需要绘制完整的网址。像这样:

http://hostename.com/default/url

当我尝试使用$this->url('default', array(1,2,3))时,我只获得/index/get/。是否有任何Zend方法来使用主机名,或者我必须使用$_SERVER['HTTP_HOST']

4 个答案:

答案 0 :(得分:45)

您可以在路由器上使用选项force_canonical。所有路由器选项都进入url helper的第三个参数:

url($route, $params, $options)

所以你可以这样:

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

答案 1 :(得分:24)

我用一些有趣的方式找到了这个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)请注意:

之间的区别
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

答案 2 :(得分:14)

有一个Zend \ View \ Helper \ ServerUrl可以在zend视图中创建完整的URL。 在视图模板中尝试以下代码。

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

答案 3 :(得分:0)

如果要全局设置基本URL,可以使用onBootstrap方法执行此操作:

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

在这种情况下,导航助手也会使用它。

要获取当前基本URL,请按照in this thread所述使用ServerUrl帮助程序:

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