Sito In Manutenzione

Nel file di configurazione, tra i parametri ho messo un valore booleano per la manutenzione.

Mi potete spiegare come far si che quando è TRUE ogni pagina che apro mi mostri un controller/action che mi fa il render della pagina di manutenzione?

Ho cercato in rete e ho trovato questo: http://www.yiiframework.com/forum/index.php/topic/3975-maintenance-mode/ ma non funziona nel modo in cui ho pensato io

Non so se ci sono altre strade ma a me ne viene in mente una semplice. Tutti i controller estendono il componente protected/controllers/Controller.php Al suo interno puoi creare un metodo chiamato init che controlli se nella configurazione il parametro "in_manutenzione" è true o false.

non devo usare catchAllRequest?

perchè catchAllRequest riesco a farlo funzionare solo se lo imposto nel file di configurazione? e non nel controller principale che estende CController? con questa chiamata Yii::app()->catchAllRequest

nel file di config non posso controllare il valore del parametro manutenzione… l’unica cosa è controllarlo come dici te nel controller… ma non posso modificare il catchAllRequest…

fatto creando un controller chiamato manutenzione e nel controller principale che estende il CController ho messo:




public function init(){

		if(Yii::app()->params['manutenzione']){

			if(Yii::app()->controller->id != "manutenzione") $this->redirect(array('manutenzione/index'));

		}

	}



Puoi farlo nel modo che preferisci. Basta che funzioni. Il codice non è il vero fine.

CIao, c’è un’estensione che si chiama maintenace Mode, che fa quello che ti serve ;)

dici questa? http://www.yiiframework.com/forum/index.php/topic/3975-maintenance-mode/

si, provala, se non ti va bene allora sviluppa la tua :)

si ma se uso quello non posso piu per esempio entrare nell’amministrazione durante la manutenzione nemmeno accedere alla pagina login

hai pensato ad un behavior che controlla il parametro?

Tu non lo avevi specificato.

mi è venuto in mente prima rispondendo al post.

In questo caso che lascio accesso alla pagina di login e all’amministrazione… è giusta la mia soluzione?

cos’è behavior? non mi sono ancora scontrato con questa funzionalità

Studiati i behavior di Yii perchè sono una cosa molto interessante che ti sarà molto utile per esempio quando inizierai ad imbatterti nelle date. Infatti il db le memorizza nel formato 0000-00-00 00-00-00 e tu magari vuoi sempre mostrarle nel formato dd/mm/yyyy. O implementi per ogni modello la conversione, oppure scrivi un behavior che "attacchi" agli attributi di dutti i modelli che hanno una data.

Cercali nella documentazione.

è una feature molto interessante che ti permette, come ti suggeriva sensorario, di avere per l’appunto dei comportamenti a livello globale sull’intera app.

io ad esempio tempo fa chiesi sul forum come poter controllare, a livello di applicazione globale, un parametro.

all’inizio il suggerimento fu quello di estendere CController, ma quando poi mi sono imbattuto nei behavior, ho cambiato strategia.

Qui due casi di utilizzo pratico, uno di un utente del forum italiano

-http://www.larryullman.com/2010/07/20/forcing-login-for-all-pages-in-yii/

-http://www.yiiframework.com/forum/index.php/topic/27624-come-utilizzare-un-application-behavior-per-mantenere-la-configurazione-a-runtime/