Sto usando Yii per alcuni anni e solo ora mi sono reso conto che la loro applicazione demo (abilitata dallo strumento di generazione automatica CRUD - Gii) sembra rompere il modello di architettura MVC. Mi piacerebbe discuterne qui.
Finché ho utilizzato MVC (circa quattro anni), mi è stato sempre detto che view non dovrebbe acquisire dati direttamente dal modello . Ogni pezzo di testo su MVC, che ho letto fino ad ora, sottolineava sempre che sia la vista che i modelli dovrebbero essere completamente separati e che il controller è l'unico elemento che li unisce. Se ho bisogno di dati del modello in vista (il meccanismo più spesso usato) dovrei lasciare che il mio controller lo recuperi e feed vista con esso.
Correggimi, se ho torto, ma trovando questa domanda e una risposta ad esso mi rende sicuro, che ho ragione: mentre è tecnicamente possibile, dovrebbe essere evitato.
Quindi, in termini di Yii, sarebbe:
$probes = Probes::model()->getAllProbesForCurrentUser;
$this->render('index', array
(
'probes'=>$probes
))
(abbastanza ovvio, penso - il controller recupera i dati dal modello e visualizza il rendering, alimentandolo con quel modello)
Se tutto quanto sopra è giusto, allora come dovrei spiegarlo:
<?php $this->widget('CGridView', array
(
'id'=>'users-grid',
'dataProvider'=>$model->search(),
'columns'=>array
(
'name',
'email',
'level'
)
)); ?>
(un widget posizionato in vista acquisisce i dati direttamente dal modello )
Cosa mi manca?