Filtri comune a tutti i controller

Vorrei creare un filtro comune a tutti i controller. Siccome la regola da applicare è uguale in tutti i controller, non voglio replicarla in ciascun controller singolarmente. Allora l’ho inserita in components/Controller e va bene. Il problema è che questa regola anche esegue una action in determinate condizioni. Come faccio a eseguire questa action in modo che sia comune a tutti?

semplicemente metti la action in Controller

assicurati però che tutti i controller permettano l’accesso alla action (nelle accessRules)

l’ho messa in Controller, ma viene lanciata un eccezione di action non trovata, perchè non si trova nel relativo controller.

Esempio io in Controller ho messo la seguente action

$this->render(‘genlogin’);

Invocando un qualsiasi controller

index.php?r=mymodel/view

yii si aspetta di trovare genlogin nelle view di mymodel e così se invoco un altro controller.

C’è un modo per definire una action diciamo “assoluta”?

il padre di tutti i controllers è yiipath+/framework/web/CController.php hai modificato lui ?

penso che paskuale abbia ragione.

facci sapere ::)

basta prestare un minimo di attenzione, tutti i controller generati da gii estendono di default il controller messo nella directory components della tua applicazione.

il motivo per cui non gli funziona è la posizione della view…

usa $this->render(’//controllername/viewname’) per usare un percorso assoluto per la view…

i metodi render e renderPartial usano come root directory la directory views dell’applicazione se metti // all’inizio invece di usare la directory delle view del controller stesso.

personalmente io estendo sempre moltissimo, moltissime action sono totalmente identiche su molti controller quindi preferisco generare un controller generico ed estendere quello per ridurre il codice al minimo…