2012-02-22 18 views
5

Czy istnieją jakieś metody właściwe dla Zend:Zend Framework: uzyskać drogę publiczną, uzyskać adres URL aplikacji

a) odbieranie ścieżkę do katalogu/public

b) odbieranie url aplikacji

Właściwie jestem za pomocą metod zdefiniowanych w kontrolerze, ale czuje się dobrze, jeśli używa gotowych metod, jeśli opuszczają.

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

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

Odpowiedz

6

chodzi URL aplikacji Zend_Controller_Request_Http ma metodę getRequestUri(), ale świadomie (i nieco denerwująco) wyklucza schematu i nazwy hosta części adresu URL. W moich aplikacjach uciekam się do pobierania $_SERVER['HTTP_HOST'] w bootstrapie i przechowywania go w rejestrze, aby móc go użyć później podczas konstruowania pełnych adresów URL.

I z pamięci, nie, nie ma wbudowanej metody, aby uzyskać lokalizację folderu public, ale kod, który masz, jest w porządku. Większość aplikacji widziałem define() wszystkie ścieżki w index.php, co moim zdaniem jest nieco bezpieczniejsze (tylko dlatego, że nazwy ścieżek zostaną ustawione wcześniej i staną się absolutnie niezmienne) i tak nieznacznie szybciej, ale nie pozwala się na debatę na temat mikro-optymalizacji ! :-)

3

1) Jeśli wirtualny host wskazuje punkt ZF/publiczny, to w widoku można uzyskać ścieżkę za pomocą metody pomocniczej $this->baseUrl(); W kontrolerze $this->view->baseUrl(); W przeciwnym razie utwórz własnego pomocnika i użyj go. 2) W sterowniku $this->getRequest()->getHttpHost();

+0

Awansuj do '$ this-> getRequest() -> getHttpHost();'! – HPM

+0

Jaka jest klasa, która ma być uwzględniona przy korzystaniu z metody 'getHTTPPost()'? – Kuttoozz

0
protected function _getPublicPath() { 
    chdir(APPLICATION_PATH); 
    return realpath("../public"); 
} 
1

a) odbieranie ścieżkę do katalogu/public

Wbudowany w PHP funkcją getcwd() daje ścieżkę do katalogu site-gospodarza (ex. output "/home/my_cp/public_html/my_site.loc/www"). A potem możesz zbudować dowolną ścieżkę.

Powiązane problemy