ZF2:Zend Framework 2 包含主机名的完整 URL



在我看来,我需要绘制完整的URL。喜欢这个:

http://hostename.com/default/url

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

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

url($route, $params, $options)

所以你可以这样:

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

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

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

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

<?php echo $this->serverUrl()?>
如果要

全局设置基本URL,可以使用onBootstrap方法进行操作:

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

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

要获取当前基本 URL,请使用 ServerUrl 帮助程序,如以下线程中所述:

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

最新更新