Intereting Posts
Сессия Laravel отсутствует после обновления страницы Uncaught ReferenceError: $ не определен? Проверьте, существует ли $ _POST Проверьте строку для действительного имени каталога Получайте количество будних дней в данном месяце Композитор, игнорирующий файл компоновщика zip dependecies 'composer.json Codeigniter Cart не может добавлять элементы Как вы обрезаете пробел в начале и конце каждой новой строки с помощью PHP или регулярного выражения Добавление класса в тело в PHP и сохранение его с помощью сеанса не может отправлять электронную почту по адресам в моем собственном домене Каковы операторы PHP «?» И «:», и что они делают? Выделение слов в Javascript – Почему они не будут выделены после полной загрузки страницы? Производительность PHP для включения нескольких файлов Функция gzopen не существует после того, как я изменил настройку PHP Как фиксировать обновления SQLite3 на PHP?

Как получить baseUrl в контроллере ZF2?

В моем контроллере zf2 я хочу получить базовый URL-адрес приложения (например, http://domain.com ).

Я попробовал следующий вызов, но он возвращает пустую строку.

 $this->request->getBasePath(); 

Как я могу получить часть URL-адреса http://domain.com в моем контроллере?

Related of "Как получить baseUrl в контроллере ZF2?"

Я знаю, что это не самый красивый способ сделать это, но, эй, это работает:

 public function indexAction() { $uri = $this->getRequest()->getUri(); $scheme = $uri->getScheme(); $host = $uri->getHost(); $base = sprintf('%s://%s', $scheme, $host); // $base would be http://domain.com } 

Или если вы не возражаете сократить все, что вы могли бы сделать в двух строках:

 public function indexAction() { $uri = $this->getRequest()->getUri(); $base = sprintf('%s://%s', $uri->getScheme(), $uri->getHost()); } 

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

 $basePath = $this->getRequest()->getBasePath(); $uri = new \Zend\Uri\Uri($this->getRequest()->getUri()); $uri->setPath($basePath); $uri->setQuery(array()); $uri->setFragment(''); $baseUrl = $uri->getScheme() . '://' . $uri->getHost() . '/' . $uri->getPath(); 

Это работает в контексте контроллера. Обратите внимание, что в строке 2 экземпляр Uri из запроса клонируется, чтобы не модифицировать экземпляр uri запроса напрямую (чтобы избежать побочных эффектов).

Я не доволен этим решением, но, по крайней мере, он один.

// Edit: Забыл добавить путь, исправлен!