Подтвердить что ты не робот

ZF2: Zend Framework 2 Полный URL-адрес, включая имя хоста

На мой взгляд, мне нужно нарисовать полный URL. Вот так:

http://hostename.com/default/url

Когда я пытаюсь использовать $this->url('default', array(1,2,3)), я получаю только /index/get/. Есть ли какой-либо метод Zend для имени хоста, или я должен использовать $_SERVER['HTTP_HOST'] вместо этого?

4b9b3361

Ответ 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();