io però vorrei impostare un filtro su tutto il Model in modo che ogni volta che lo richiamo venga già applicata la where condition senza che debba specificarla per ogni oggetto (ad esempio quando genero un CGridView).
Beh se vuoi che non vengano mostrati dei dati per tutto il model, … non metterli nella tabella.
Oppure creati un metodo pubblico nel tuo model che fornisca un CActiveDataProvider ottimizzato e riutilizzato in tutti i luoghi in cui viene caricato quel model.
Un’altra possibilità, potrebbe essere quella di crearti diversi search ciascuno che faccia al caso tuo. Però va da se che non credo vengano presi in automatico: tu comunque, la prima volta, dovresti andare a modificare tutti i vari CDataGrid, CListView e via dicendo.
Quando genero il CActiveDataProvider da passare alla CListView, posso definire ulteriori ‘condition’ che si vanno a aggiungere quelle già definite nel Model tramite defaultScope. Ad es:
Nel Controller (aggiungo un ulteriore ‘condition’)
public function index() {
$dataProvider = new CActiveDataProvider('MioModel', array(
'criteria'=>array(
'condition'=>'campo_1 = true',
),
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}