Ciao ragazzi,
vorrei un aiutino nel capire come funziona una cosa che mi sfugge.
L’ Yii crud generator genera:
- La riga
$model=new FlkActivities('search');
nel metodo adminAction() del mio controller ActivitiesController.
- Il metodo search() nel model FlkActivities corrispondente.
Sembra che il metodo search() sia chiamato automaticamente dal comando new FlkActivities(‘search’), ma sono un po’ confuso dalla sintassi di quel comando e del perchè questo succeda e dal fatto che sembra che search() sia chiamato ‘in ogni caso’:infatti ho provato a chiamare alternativamente sia new FlkActivities() senza parametri, che new FlkActivities(‘mysearch’) riferendomi ad un altro metodo da me creato mysearch() nel model, ma sembra che venga chiamato sempre e comunque il metodo search().
Mi potete aiutare a capire perchè? C’è un particolare funzionamento rispetto al metodo chiamato ‘search’ che il framework mette in atto? O che cosa mi sfugge?
Il mio intento era aggiungere una condizione ‘order by’ al model ricavato dal comando $model=new FlkActivities(‘search’) e l’unico modo che ho trovato per farlo è stato creare uno scope che eseguisse l’‘order by’ e modificare il codice nel metodo search():
- Lo scope:
public function scopes()
{
return array(
'ordByNewer'=>array(
'order'=>'pdate DESC',
),
);
}
- La modifica nel metodo search() da così:
.....
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
a così
.....
return new CActiveDataProvider($this->ordByNewer(), array(
'criteria'=>$criteria,
));
Funziona, ma avrei voluto tenere la call a ordByNewer() fuori dal search, facendo una cosa tipo
new FlkActivities('search')->ordByNewer()
che ovviamente non funziona
Qualche suggerimento?
Grazie!
Andrea