Domanda

Nel mio progetto Zend Framework voglio verificare se un cookie è impostato. Se è il caso che voglio utilizzare i contenuti dei cookie per il login di un utente.

Dal momento che è neccessary per me fare questo accesso automatico prima di qualsiasi controller è chiamato ho provato a metterlo in Bootstrap. Ci voglio controllare il database se le informazioni utente è valido. Purtroppo a questo punto l'adattatore database predefinito non è ancora inizializzato.

Quindi la mia domanda è la seguente: Dove posso mettere quelle cose che dovrebbe essere eseguito prima di qualsiasi controller è chiamato e dopo tutto inizializzazione / roba bootstrapping è fatto?

È stato utile?

Soluzione

I'have non una grande esperienza con Zend Framework, ma penso che si dovrebbe creare un controller generica personalizzato per esempio GenericController che estende la Zend_Controller_Action e inserire il codice nella funzione preDispatch (). Tutti i controller sarà quindi una sottoclasse del controller personalizzato, ad esempio:

class GenericController extends Zend_Controller_Action{
   function preDispatch(){
      parent::preDispatch();
      // put your code here
   }
}
class FooController extends GenericController{
...
}

Altri suggerimenti

Utilizzare i metodi:

init()
// and
preDispatch()

li implementare nella tua classe, corre init al creazione, preDispatch corre a destra prima del tuo metodo di azione IIRC

api

In quella pagina ho linkato sopra afferma

  
    

Nota: L'utilizzo di init () vs. preDispatch ()     Nel paragrafo precedente, abbiamo introdotto il metodo init (), e il metodo di questa sezione, il preDispatch (). Qual è la differenza tra loro, e quali azioni vuoi prendere in ciascuna?     Il metodo init () è destinato principalmente per estendere il costruttore. In genere, il costruttore deve semplicemente impostare lo stato oggetto, e non eseguire molto logica. Ciò potrebbe includere inizializzazione risorse utilizzate nel controller (come modelli, oggetti di configurazione, ecc) o assegnando valori recuperati dal front controller, bootstrap, o un registro.     Il metodo preDispatch () può essere utilizzato anche per oggetto set o ambientale (ad esempio, vista, l'azione di supporto, ecc) dello stato, ma il suo scopo primario è quello di prendere decisioni circa se o non l'azione richiesta deve essere inviato. In caso contrario, si dovrebbe quindi _forward () per un'altra azione, o un'eccezione.     Nota: _forward () in realtà non funziona correttamente quando eseguito da init (), che è una formalizzazione delle intenzioni dei due metodi.

  
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top