cerbero
(22cerbero22)
1
Ciao a tutti,
è possibile cambiare il modo in cui un DataProvider mostra i risultati, ad esempio modificando l’ordinamento, attraverso una chiamata AJAX?
Il codice che sto usando è questo, ma per il momento non funziona:
$criteria = new CDbCriteria();
if($_POST['action'] == 'sort') {
$order = urldecode($_POST['order']);
$criteria->order = $order;
}
$dataProvider = new CActiveDataProvider('Offers', array('criteria'=>$criteria));
$this->render('index', array(
'dataProvider' => $dataProvider,
));
e i dati che passo via AJAX sono questi (li ho già controllati con FireBug):
action=sort&order=price%20DESC
Possibile che i dati che passi siano in get e la lettura sia sbagliata?
if($_POST['action'] == 'sort') {
...
}
cerbero
(22cerbero22)
3
i dati li passo in POST e, oltre che verificarli con FireBug, li ho anche mostrati in un alert via AJAX
perciò i dati vengono passati correttamente, deve essere sbagliato il mio approccio
Che cosa succede se al posto di questo:
if($_POST['action'] == 'sort') {
$order = urldecode($_POST['order']);
$criteria->order = $order;
}
… ti limiti a scrivere …
$criteria->order = 'price DESC';
cerbero
(22cerbero22)
5
Sì, era un test che avevo fatto e funzionava.
Ho risolto con un CHtml::ajaxLink che punta ad actionSort() passandogli il criterio di ordinamento
l’action in questione si occupa di fare un renderPartial usando l’ordine passato
grazie per i tuoi consigli, sensorario