2009-08-26 10 views
6

echa un vistazo a este sitio web www.fltdata.com. Por alguna razón, el enlace de inicio no importa en qué página vaya en lugar de señalar la página de inicio que apunta a la página actual funciona bien en mi localhost, pero su línea de comportarse como esto el valor href del enlace de casa es simplemente:.. $ this-> baseUrl()

¿Cuál es incorrecto aquí ..

=== === EDITAR

Bueno, yo he creado un ayudante que es de la siguiente manera:

class Zend_View_Helper_BaseUrl 
{ 
    protected $_baseUrl; 

    function __construct() 
    { 
     $fc = Zend_Controller_Front::getInstance(); 
     $this->_baseUrl = $fc->getBaseUrl(); 
    } 

    function baseUrl() 
    { 
     return $this->_baseUrl; 
    } 
} 

Y esto es, supongo que se llama cada vez que llamo $ this-> baseUrl. ¿Podría ser este el problema? Sin embargo, funciona bien en mi servidor local y no en línea, así que debe ser algún tipo de problema de configuración. ¿Dónde debería buscar?

Respuesta

15

Es difícil saber qué está pasando aquí sin saber más detalles sobre su configuración de ZF y e.h. el url-rewriting-setup. La lógica detrás de Zend_Controller_Request_Http::getBaseUrl() - aquí es donde su llamada a Zend_View_Helper_BaseUrl::baseUrl() se identificará si no baseUrl se establece explícitamente en el controlador frontal - es bastante compleja e involucra 4 variables de servidor diferentes (y algunas más en el proceso de determinar el URI de solicitud actual) .

Lo más fácil para superar este problema sería establecer el baseUrl (relativo a la raíz del servidor) en el controlador frontal en su arranque. Si estás usando el nuevo Zend_Application -bootstrapping que sólo tendrá que añadir

resources.frontController.baseUrl = "/subdir" 

a su configuración.

EDITAR

Su ayudante más o menos se parece al original baseUrl -helper enviado con el ZF. El original también representa a Zend_Controller_Front::getBaseUrl(). ¿Qué versión de ZF usas? ¿Hay alguna razón por la cual no utiliza el baseUrl -helper enviado?

¿Ha intentado configurar el baseUrl en su arranque de manera explícita?

+0

Hay una gran cantidad de Zend estoy muy al tanto de :(- He publicado mi función auxiliar - es algo mal allí – Ali

+0

En realidad sólo estaba siguiendo un tutorial y el? Creo que estoy configurando el baseUrl en mi archivo bootstrap en cualquier lugar. – Ali

+0

¿Ha intentado establecer el URL de base explícitamente? ¿Cuál es el resultado? ¿Ha intentado utilizar el paquete baseUrl-helper que se envió? ¿Cuál es el resultado? –

6

lo general el uso de un objeto de configuración para url base y luego defino en el index.php en público/index.php

$config = new Zend_Config_Ini(
     APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); 
    $baseUrl = $config->baseHttp; 
    define('BASE_URL', $baseUrl);` 

en el configs/application.ini tengo esta en la sección de producción

[production] 
baseHttp       = "http://whatever.net" 

esta manera, si alguna vez tengo que utilizar una URL base diferente en Desarrollos tan sólo pudiera añadir una variable diiferent para baseHttp personalmente creo que si quieres una la baseurl no quedar enrevesado que es un enfoque más simple que envolver en su propia clase. A veces OOP es demasiado OOP. Además, haría que un programa de instalación fuera más fácil de administrar. Incluso podría obtener la variable $ _SERVER para obtener el nombre de host y ajustarlo con http: //

4

Zend Framework siempre devuelve la página actual porque no está utilizando una barra al final después de llamar al $ this-> baseUrl();.

Para resolver el problema, agregue una barra al final después de llamar al $ this-> baseUrl(); en su opinión, así:


la manera correcta

<a href="<?php echo $this->baseUrl() . "/"; ?>">Home Link</a> 

o

<a href="<?php echo $this->baseUrl(); ?>/">Home Link</a> 

omitiendo los resultados de una barra final en un enlace a la página' re actualmente viendo.

la manera incorrecta

<a href="<?php echo $this->baseUrl(); ?>">Home Link</a> 
Cuestiones relacionadas