Почему Zend_View_Helper_Url возвращает относительный путь при использовании маршрута по умолчанию и абсолютный путь при использовании пользовательского маршрута?

У меня есть приложение, работающее на Zend Framework 1.12, и я использую помощник просмотра URL. У меня также есть несколько пользовательских маршрутов, которые я использую с помощником URL для очистки кода.

Когда я использую такой формат, как этот:

$this->url(array('module' => 'myapp', 'controller' => 'index', 'action' => 'index'), 'default', true)

Полученная строка является относительным путем к действию - /myapp/index/index

Но когда я использую собственный маршрут как таковой:

$this->url(array('var' => 'value'), 'custom-route', true)

Полученная строка является абсолютным путем - http://www.domain.com/custom-route

Я не понимаю, почему это происходит, и я не могу найти какую-либо информацию об этом поведении в Интернете. Кроме того, я хотел бы знать, есть ли способ предотвратить это и обеспечить согласованность в работе помощника представления URL (предпочтительно всегда возвращать относительный путь).

Благодарю.

1 ответ

Решение

Я думаю, что это так же просто, как ваш первый пример типа по умолчанию Zend_Controller_Router_Route_Module маршрут, который обычно относительно.

Ваш второй пример - именованный маршрут, поэтому он должен включать базовый URL, чтобы быть действительным. Я не верю, что переписанные маршруты могут быть относительными, так как маршрут может относиться или не относиться к фактическому местоположению.

Я провел некоторое ограниченное тестирование, и я считаю, что если вы установите значение baseUrl, в первом примере также будет указан адрес хоста. Так что для согласованности ваши URL всегда будут абсолютными.

//application.ini
resources.frontController.baseurl = http://www.domain.com

Надеюсь это поможет.

Другие вопросы по тегам