Associazione principianti chiede help a professionisti.

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 ?

scusate lo sfogo, buon proseguim a tutti! ;)

Hai ragione =).

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.

  1. Creiamo la cartella /protected/extensions/esempio/

  2. 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.

  1. 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');");

   }

}



  1. 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/)

  1. 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)




<?php $this->beginContent('//layouts/main'); ?>

<div class="container">

    <div class="span-19">

        <div id="content">

            <?php echo $content; ?>

        </div><!-- content -->

    </div>

    <div class="span-5 last">

        <div id="sidebar">

            <?php

            $this->beginWidget('zii.widgets.CPortlet', array(

                'title' => 'Operations',

            ));

            $this->widget('zii.widgets.CMenu', array(

                'items' => $this->menu,

                'htmlOptions' => array('class' => 'operations'),

            ));

            $this->endWidget();

            ?>

        </div><!-- sidebar -->

    </div>

</div>

<?php $this->endContent(); ?>



(zii = prima avevamo ext, adesso abbiamo zii. zii punta alla cartella zii che puoi trovare dentro al framework)

Io ti rimando al post che ti ho fatto poco prima - http://www.yiiframework.com/forum/index.php?/topic/27238-template-a-blocchi/page__view__findpost__p__131879

Devi passare la definitive guide to Yii… con quella, a dipendenza della tua base di conoscimento di PHP objetivo, riceverai dal 50-80% di Yii :D