2012-02-22 35 views
5

¿Hay algunos métodos adecuados para Zend:Zend Framework: obtener la ruta pública, obtener URL de la aplicación

a) recibir ruta a/directorio público

b) recibir la solicitud url

En realidad estoy usando métodos definidos en Controller, pero se siente bien usar métodos listos si salen.

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

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

Respuesta

6

En cuanto a la URL de la aplicación, Zend_Controller_Request_Http tiene un método getRequestUri(), pero deliberadamente (y algo frustrante) excluye las partes esquema y nombre de host del URL. En mis aplicaciones he recurrido a tomar $_SERVER['HTTP_HOST'] en el programa de arranque y almacenarlo en el registro para que pueda usarlo más adelante al construir direcciones URL completas.

Y desde la memoria, no, no hay ningún método incorporado para obtener la ubicación de la carpeta public, pero el código que tiene es correcto. La mayoría de las aplicaciones que he visto define() todas las rutas en index.php, que supongo que es un poco más seguro (solo porque los nombres de ruta se configuran antes y se vuelven absolutamente inmutables) y un poco más rápido, pero no entremos en un debate sobre micro-optimizaciones ! :-)

3

1) Si su host virtual apunta a ZF/public, en View puede obtener la ruta por el método de ayuda $this->baseUrl(); En el controlador $this->view->baseUrl(); De lo contrario, cree su propio helper y úselo. 2) En el controlador $this->getRequest()->getHttpHost();

+0

Upvote para '$ this-> getRequest() -> getHttpHost();'! – HPM

+0

¿Cuál es la clase que se incluirá para usar 'getHTTPPost()'? – Kuttoozz

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

a) recibir ruta a/directorio público

Built-in-php getcwd() le dará la ruta de la carpeta de sitio de acogida (ex. salida "/home/my_cp/public_html/my_site.loc/www"). Y luego, puedes construir cualquier camino que desees.

Cuestiones relacionadas