Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use the ajaxUrl parameter of CGridView in Yii?

Tags:

ajax

yii

I'm trying to use ajaxUrl param of CGridView and it's having no effect.

$this->widget('zii.widgets.grid.CGridView', array(
   'id'=>'ge-cg-'.$myLib['id'],
   'filter'=>$geCGModel,
   'dataProvider'=>$dataProvider, 
   'columns'=>$columns,
   'ajaxUrl'=>Yii::app()->createUrl( 'Something/search' ),
));

This doesn't seem to be overriding the ajax url of the CGridView widget. The grid's ajax request is still going to the controller that rendered it (which is different than the grid's own controller).

Thanks!

like image 918
111 Avatar asked Sep 27 '12 17:09

111


1 Answers

The ajaxUrl property works only for searches, both the "per column filters" and "advanced search". The sort links and pagination links are generated from the $dataProvider that you specify. You can check the source of CGridView and CDataColumn to see how pagination and sorting is extracted from the dataProvider, respectively.

Hence if you want those links to also use the same ajaxUrl that you want to specify, then you have to set the route property for both the CPagination object, and CSort object of the $dataProvider, somewhat like this:

$dataProvider=new CActiveDataProvider('Modelname',array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'route'=>'something/search'
    ),
    'sort'=>array(
        'route'=>'something/search'
    )
));

This combined with your current CGridView settings should work as expected.

like image 82
bool.dev Avatar answered Sep 27 '22 00:09

bool.dev