Realizar una acción para varias filas de un grid
Modificamos la vista:
$form=$this->beginWidget('CActiveForm', array(
'id'=>'MODELO-form',
'action'=>CHtml::normalizeUrl(array('ACCION')),
'enableAjaxValidation'=>false,));
$this->beginWidget('zii.widgets.grid.CGridView', array(
...
'selectableRows'=>999,
...
array(
'class'=>'CCheckBoxColumn',
'id'=>'CLASE_IDS'
),
<input type=submit name=accion value=Confirmar onclick='return checkselect(\"Sanciones_selected\");' >
<script language="javascript">
function checkselect(id){
if(!$('input[@id='+id+']:checked').length) {
alert('No hay nada seleccionado!');
return false;
} else {
return true;
}
}
</script>
En el controlador creamos la acción, recogemos la lista de id's de la forma habitual y la procesamos:
$ids=$_POST["CLASE_IDS"]; //lista de seleccionados
if(!$ids) {
throw new CExcepcion(404,"No se han seleccionado elementos! ");
}
foreach (CLASE::model()->findAllbyPk($ids) as $obj){
...
$obj->save();
}
$this->redirect(array('admin'));