Eccomi che torno alla ribalta =) ho passato ore googleando e scrutando decine di post su questo forum, ma alla fine mi restava sempre un punto interrogativo in testa !!
Allora in qualità di presidente Assoc.Principianti Yii(mi sono autoeletto)
CHIEDO
Ai tanti programmatori di buon cuore che rispondono alle nostre domande, di non rispondere dato per scontato che si conosca già l’80% del tutto, perchè a malapena siamo al 20%-30% (mediamente)
Proposta di corpose righe di commento ad ogni riga/comando proposta.
Ringrazio a nome di tutti quelli come me che stan cercando di venirne fuori e comprendere questo Yes it is!
P.S.
sensorario, tra i tanti post (interessantissimi) ne cito uno dei tuoi, si chiama ho fatto un widget bello … interessante … prendiamo il primo messaggio
io personalmente comprendo solo che forse questo widget farà un alert javascript con la scritta "Esempio" … ma tutto il Yii:app()->getClient… da dove lo pigli e cosa farebbe ?
Diciamo che per estendere Yii ci sono tantissimi modi. Uno dei tanti, è la creazione di un widget. In genere i widget si mettono dentro alla cartella /protected/extensions/. E’ buona pratica creare una cartella con il nome del widget e dentro a quella cartella creare il widget. Si, ma che forma ha il widget? Il widget è una classe che estende CWidget. Facciamo un esempio.
Creiamo la cartella /protected/extensions/esempio/
Creiamo il file /protected/extensions/esempio/EEsempio.php
La E maiuscola all’inizio del file è una buona pratica. Yii in genere vorrebbe C davanti a tutte le classi del framework. E davanti alle classi delle estensioni. E così via. Ma non approfondisco.
Dopo aver creato cartella e file, va creato il widget: il widget sarà una classe che estende CWidget ed avrà lo stesso nome del file.
class EEsempio extends CWidget {
public function init() {
Yii::app()->getClientScript()->registerScript(__CLASS__ . '#', "alert('Esempio');");
}
}
Dentro ad una view, ovvero un qualsiasi files che si trova dentro alla cartella /protected/views/* quando si scrive si richiama il metodo EEsempio::init();
<?php $this->widget('ext.esempio.EEsempio'); ?>
(ext punta direttamente alla cartella /protected/extensions/)
Se vuoi puoi usare un’altra sintassi
beginWidget richiama il metodo init, mentre endWidget il metodo run. (Un’applicazione di questo codice la trovi dentro a /protected/view/layouts/column2.php)