Herramientas de usuario

Herramientas del sitio


cursos:yii:faq

Realizar una acción para varias filas de un grid

  1. Modificamos la vista:
    • Incluimos el Gridview dentro de una form:
     $form=$this->beginWidget('CActiveForm', array(
	'id'=>'MODELO-form',
        'action'=>CHtml::normalizeUrl(array('ACCION')),
	'enableAjaxValidation'=>false,)); 
 
  • En el Gridview incluimos:
     $this->beginWidget('zii.widgets.grid.CGridView', array(
     ...
     'selectableRows'=>999,
     ...
      array(
        'class'=>'CCheckBoxColumn',
        'id'=>'CLASE_IDS'
      ),
 
  • Añadimos campos adicionales si queremos, que se enviarán junto a la lista de id's, y un botón submit
      <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>
 
 
  1. 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'));