Zend Framework: получить публичный путь, получить URL приложения - PullRequest
5 голосов
/ 22 февраля 2012

Существуют ли подходящие методы Zend для:

a) получение пути к / публичному каталогу

б) URL-адрес приложения

На самом деле я использую методы, определенные в Контроллере, но кажется правильным использовать готовые методы, если они выходят.

protected function _getApplicationUrl() {
    return $_SERVER['SERVER_NAME'];
}

protected function _getPublicPath() {
    return realpath(APPLICATION_PATH . '/../public/');
}

Ответы [ 4 ]

6 голосов
/ 22 февраля 2012

Что касается URL-адреса приложения, Zend_Controller_Request_Http имеет метод getRequestUri(), но он намеренно (и несколько разочаровывающе) исключает части URL-адреса схемы и имени узла.В своих приложениях я прибег к захвату $_SERVER['HTTP_HOST'] в начальной загрузке и сохранению его в реестре, чтобы я мог использовать его позже при создании полных URL-адресов.

А из памяти нет, никаких встроенных-в методе, чтобы получить местоположение папки public, но код у вас в порядке.Большинство приложений, которые я видел define() по всем путям в index.php, что, я полагаю, немного безопаснее (только потому, что имена путей устанавливаются раньше и становятся абсолютно неизменными) и даже немного быстрее, но не позволяет вступать в дискуссиюо микрооптимизациях!: -)

3 голосов
/ 22 февраля 2012

1) Если ваш виртуальный хост указывает на ZF / public, то в View вы можете получить путь с помощью вспомогательного метода $this->baseUrl(); В контроллере $this->view->baseUrl(); В противном случае создайте свой собственный помощник и используйте его. 2) В контроллере $this->getRequest()->getHttpHost();

1 голос
/ 28 сентября 2015

а) путь получения к / публичному каталогу

Встроенная функция php getcwd () даст вам путь к вашей папке сайта-хоста (напр. вывод "/home/my_cp/public_html/my_site.loc/www").И тогда вы можете построить любой путь, который вы хотите.

0 голосов
/ 05 августа 2013
protected function _getPublicPath() {
    chdir(APPLICATION_PATH);
    return realpath("../public");
}
...