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

Ser*_*nov 13 zend-framework2

在我看来,我需要绘制完整的URL.像这样:

http://hostename.com/default/url
Run Code Online (Sandbox Code Playgroud)

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

Jur*_*man 45

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

url($route, $params, $options)
Run Code Online (Sandbox Code Playgroud)

所以你可以这样:

$this->url('myroute', array('id' => 123), array('force_canonical' => true))
Run Code Online (Sandbox Code Playgroud)


Iva*_*oni 25

我发现这篇文章有一些有趣的方式:

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
Run Code Online (Sandbox Code Playgroud)

2)注意以下两者之间的差异:

echo $this->serverUrl(); 
// Output: http://mydomain.com
Run Code Online (Sandbox Code Playgroud)

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

3)从路线开始

// The "register" route has the following route: /register
echo $this->serverUrl($this->url('register')); 
// Output: http://mydomain.com/register
Run Code Online (Sandbox Code Playgroud)


All*_*nce 14

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

<?php echo $this->serverUrl()?>
Run Code Online (Sandbox Code Playgroud)

  • 问题是关于在视图中生成完整URL.但如果有人到这里寻找如何在控制器中执行此操作,那么它是:`$ this-> getRequest() - > getServer('HTTP_HOST').$这个 - >网址() - > fromRoute( 'carrinho/compra-efetuada')` (3认同)