2012-09-27 34 views
6

Estoy tratando de usar ajaxUrl param de CGridView y no tiene ningún efecto.¿Cómo uso el parámetro ajaxUrl de CGridView en Yii?

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

Esto no parece ser sobrescribir la URL del widget ajax CGridView. La solicitud de Ajax de la cuadrícula sigue yendo al controlador que la emitió (que es diferente del controlador de la cuadrícula).

Gracias!

Respuesta

10

La propiedad ajaxUrl funciona solo para búsquedas, tanto "filtros de columna" como "búsqueda avanzada". Los enlaces de clasificación y paginación se generan a partir del $dataProvider que especifique. Puede consultar el origen de CGridView y CDataColumn para ver cómo se extraen pagination y sorting del proveedor de datos, respectivamente.

Por lo tanto, si usted quiere esos vínculos también utilizan el mismo ajaxUrl que desea especificar, entonces usted tiene que establecer la propiedad route tanto para el objeto CPagination y CSort objeto de la $dataProvider, algo como esto:

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

Esto combinado con su configuración actual de CGridView debería funcionar como se esperaba.

+0

espero haberlo hecho correctamente, pero al mirar su url nuevamente, parece que quiere que la búsqueda funcione con ese ajaxurl (no solo paginación y ordenación). La búsqueda debería funcionar sin realizar los cambios que mencioné en la respuesta, por lo que si su búsqueda no funciona, hágamelo saber. –

+1

Excelente. Gracias. Terminé trabajando en torno a él haciendo una solicitud secundaria de Ajax que dejó todo por defecto en la URL correcta, pero esto debería ser útil en el futuro. – glyph

+0

Me alegro de ayudar, pero solo tengo curiosidad, ¿tu búsqueda estaba trabajando con ese ajaxUrl? si no, ¿puedes decirme si esa fue tu configuración completa para la vista de cuadrícula (menos las columnas)? o tenías otras propiedades también definidas? también déjame saber tu versión yii. –

Cuestiones relacionadas