2009-08-26 11 views
6

consulta questo sito Web www.fltdata.com Per qualche motivo il link di casa non importa quale pagina vai invece di puntare alla home page che punti alla pagina corrente funziona bene sul mio localhost, ma in linea il suo comportarsi in questo modo il valore href del collegamento casa è solo:.. $ this-> baseurl()

cosa c'è di sbagliato qui ..

=== === EDIT

Beh ho creato un aiutante, che è il seguente:

class Zend_View_Helper_BaseUrl 
{ 
    protected $_baseUrl; 

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

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

E suppongo che si stia chiamando ogni volta che chiamo $ this-> baseUrl. Questo potrebbe essere il problema - tuttavia funziona bene nel mio localhost e non online quindi - deve essere una sorta di problema di configurazione - dove dovrei cercare?

risposta

15

È difficile dire cosa sta succedendo qui senza conoscere ulteriori dettagli sulla configurazione ZF e e.h. l'url-riscrittura-setup. La logica dietro Zend_Controller_Request_Http::getBaseUrl() - questa è la tua chiamata a Zend_View_Helper_BaseUrl::baseUrl() a cui verrà inviato il comando se non è impostato baseUrl esplicitamente nel front controller - è piuttosto complesso e coinvolge 4 diverse variabili del server (e altre ancora nel processo di determinazione dell'URI della richiesta corrente) .

La soluzione più semplice per ovviare a questo problema potrebbe essere quella di impostare baseUrl (relativo alla radice del server) sul controller anteriore nel bootstrap. Se si sta utilizzando la nuova Zend_Application -bootstrapping dovrete semplicemente aggiungere

resources.frontController.baseUrl = "/subdir" 

alla configurazione.

EDIT

vostro aiuto più o meno simile a quello originale baseUrl -helper fornito con ZF. L'originale è anche proxy a Zend_Controller_Front::getBaseUrl(). Quale versione di ZF usi? C'è un motivo per cui non si utilizza il modello baseUrl spedito?

Hai provato a impostare lo baseUrl nel bootstrap in modo esplicito?

+0

Theres molto su Zend Sono abbastanza inconsapevole di :(- ho postato la mia funzione di supporto - è qualcosa che non va c'è – Ali

+0

realtà stavo solo seguendo un tutorial e la? il sito si accumula da quel punto - non penso di aver impostato baseUrl nel mio file bootstrap in nessuna posizione – Ali

+0

Hai provato a impostare esplicitamente la baseUrl? Qual è il risultato? Hai provato a utilizzare il database baseUrl-helper? Qual è il risultato? –

6

Uso solitamente un oggetto di configurazione di URL di base e quindi definire nel index.php in pubblico/index.php

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

nel configs/Application.ini ho questo nella sezione produzione

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

in questo modo se mai bisogno di utilizzare un diverso URL di base in sviluppo ho potuto solo aggiungere una variabile diiferent per baseHttp personalmente penso che se si vuole un l'baseurl non farsi contorto si tratta di un approccio più semplice di confezionamento in la sua classe. A volte l'OOP è troppo OOP. Inoltre, renderebbe più facile la gestione di un programma di installazione. Si potrebbe anche ottenere la variabile $ _SERVER per ottenere il nome host e avvolgerlo con http: //

4

Zend Framework restituisce sempre la pagina corrente perché non si utilizza una barra finale dopo aver chiamato $ this-> baseUrl();.

Per risolvere il problema, aggiungere una barra finale dopo aver chiamato $ this-> baseUrl(); secondo lei in questo modo:


Il modo corretto

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

o

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

Tralasciando i risultati slash in un link alla pagina che si' attualmente in visione.

Il modo errato

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