ZF2: Zend Framework 2 Полный URL-адрес, включая имя хоста
На мой взгляд, мне нужно нарисовать полный URL. Вот так:
http://hostename.com/default/url
Когда я пытаюсь использовать $this->url('default', array(1,2,3))
, я получаю только /index/get/
. Есть ли какой-либо метод Zend для имени хоста, или я должен использовать $_SERVER['HTTP_HOST']
вместо этого?
Ответы
Ответ 1
Вы можете использовать опцию force_canonical
на маршрутизаторе. Все параметры маршрутизатора входят в третий параметр помощника URL:
url($route, $params, $options)
Итак, вы можете сделать что-то вроде этого:
$this->url('myroute', array('id' => 123), array('force_canonical' => true))
Ответ 2
Я нашел эту статью с интересными способами:
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
Ответ 3
Существует Zend\View\Helper\ServerUrl для создания полного URL-адреса в zend-представлении.
Попробуйте ввести код в шаблоне просмотра.
<?php echo $this->serverUrl()?>
Ответ 4
Если вы хотите установить базовый URL по всему миру, вы можете сделать это с помощью метода onBootstrap:
$e->getApplication()->getMvcEvent()->getRouter()->setBaseUrl($baseUrl);
В этом случае навигационные помощники также будут использовать его.
Чтобы получить текущий базовый URL, используйте вспомогательный сервер ServerUrl, как описано в этом потоке:
$serverUrl = $e->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl');
$baseUrl = $serverUrl->__invoke();