Di primo acchito sembra tutto ok (il codice, non il comportamento delle griglia), puoi copia/incollarci il metodo search del model ?
Prova ad eseguire il filtro con Firefox e firebug installato. Nella console clicca su ‘mantieni’, quindi prova a rieseguire i passi che ci hai elencato. Se c’è un errore javascript (non si sa mai), li si vede.
In alternativa, puoi, sembra da firebug, guardare il pannello ‘NET’ filtrandolo sugli oggetti XHR (le chiamate ajax) e guardare se nel response per caso c’è un errore PHP o my SQL.
Altra cosa: in runtime\application.log delle volte trovi delle informazioni (le ultime sono in fondo al file stesso)
Io anziché usare firebig, uso Chrome, ma il risultato non cambia.
Si vede negli header che il browser manda la richiesta di elaborazione (col filtro PIPPO sbiancato)
e si vede l’output ricevuto da YII della pagina HTML identica a quella con filtro
Il metodo search del model è il classico:
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('CAMPO_A',$this->CAMPO_A,true);
$criteria->compare('CAMPO_B',$this->CAMPO_B,true);
return new CActiveDataProvider($this, array('criteria'=>$criteria,));
}
Sull’application.log… BINGO! c’è un bell’errore che però non mi dice nulla:
2012/10/16 14:05:46 [warning] [application] Failed to set unsafe attribute "CAMPO_B" of "Modello".
in /var/www/blablabla.it/protected/controllers/TestController.php (37)
Perchè se per personalizzare la vista nella CGridView hai usato dei ‘name’ che sono diversi dal nome del campo, è necessario creare una variabile globale nel model che si chiami nello stesso modo, quindi usare la stessa variabile nel compare.
Se questo NON è il tuo caso, ahimè ho finito le idee
di che tipo di dato stiamo parlando? testo, date, numeri…