[Solucionado] Editar En Un Cgridview

Que tal amigos del foro!!! es un gusto saludarlos.

¿Como puedo guardar los datos editados en un CGridView (obviamente ya tengo las columnas con textfield y algunos checkbox)de un conjunto de campos que realizo en una consulta? Se requiere guardarlas en dos tablas diferentes.

La tabla 1 se llama miembros

La tabla 2 se llama asistencia

La tabla 3 se llama detalleslista

Lleno el CGridView con datos de la tabla miembro (solo tres datos)

Por cada miembro que exista en la base de datos, en el CGridView le agrego otras columnas que serán editables

Al guardar necesito que recorra el CGridView y los guarde tanto en la tabla asistencia como detalleslista

Alguien respondera?

¿Como puedo guardar los datos editados en un CGridView (obviamente ya tengo las columnas con textfield y algunos checkbox)de un conjunto de campos que realizo en una consulta? Se requiere guardarlas en dos tablas diferentes.

La tabla 1 se llama miembros

La tabla 2 se llama asistencia

La tabla 3 se llama detalleslista

Lleno el CGridView con datos de la tabla miembro (solo tres datos)

Por cada miembro que exista en la base de datos, en el CGridView le agrego otras columnas que serán editables

Al guardar necesito que recorra el CGridView y los guarde tanto en la tabla asistencia como detalleslista

[/quote]

Buenas tardes.

No entiendo lo que quieres.

Tienes un formulario en el cuál rellenas datos y al hacer el submit quieres q esos datos se añadan a unoo varios CGridView?

Si es eso lo consigues con un ajaxSubmitButton.

Si lo q deseas son CGridView editables, con YiiBooster puedes tenerlos.

Revisa esto : Additional Column Types

Un saludo.

5182

imagen1.jpg

Les adjunto una imagen para tener una mejor idea de lo que quiero hacer.

Al dar click en el boton guardar, los ultimos 7 campos del CGridView que son editables se guardaran en la tabla

detallelistaasistencia, además del id de cada miembro del club.

Reunion y descripcion se guardarán en la tabla listaasistencia…

Lo que quiero hacer es un multi insert

¿Como recorrer el CGridView?

Espero y tengan una idea. Gracias

Buenas de nuevo.

No tienes q recorrer tu CGridView. En principio lo que tendrás serán arrays de controles, con lo que entiendo que cuando hagas el POST enviarás un array de los modelos correcpondientes.

Entonces en $_POST tendrás arrays con todos los datos, recorres esos arrays y listo.

Un saludo.

Muchas gracias lagogz, tengo la duda, en cuanto a enviar todas esas variables, mediante un array, como asignarle el valor en cada control para después por medio de un array enviarlo al controlador y guardarlo en la base de datos.

Buenos días.

Tienes que crear arrays de controles, de ese modo se enviarán como arrays mediante $_POST.

Todos los elementos de un array se deben llamar de la misma forma:




...

... name="nombreControl[]"...

...



Un saludo.

Muchas gracias lagogz; si no es mucho pedir, habrá algún ejemplo sobre lo que comentas. Array de controles, buscando en este foro no encontré alguno. De todos modos, te agradezco por la información.

Buenas de nuevo.

Por ejemplo, imagínate que tienes una vista con un formulario, y dentro de formulario hay lo siguiente:




echo CHtml::activeTextField($model, 'nombreCampo',array(

                                                                'name'=>'nombreCampo[]',

                                                                'class'=>'span3',

                                                                'maxlength'=>100,

                                                                'placeHolder' => 'Obligatorio',

                                                                ));


echo CHtml::activeTextField($model, 'nombreCampo',array(

                                                                'name'=>'nombreCampo[]',

                                                                'class'=>'span3',

                                                                'maxlength'=>100,

                                                                'placeHolder' => 'Obligatorio',

                                                                ));



Como ves, hay 2 cajas de texto para un mismo atributo de un modelo, pero he establecido su name como un array mediante los corchetes.

En el momento en el que se envíe el formulario, el action correcpondiente va a recibir un array llamado "nombreCampo" que tendrá todos como elementos todos los valores de las cajas que se llamen de igual forma. Entonces tienes que recorrer ese array, y guardar los valores donde corresponda.

Un saludo.

lagogz, con respecto a lo que me comentas sobre los array de controles,

tengo el siguiente codigo del cgridview:


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'listaasistencia-grid',

	'dataProvider'=>$member->Activos(),

        'enablePagination'=>false,

	'columns'=>array(

                //'idMiembro', //idmiembro

            

               array(

                 'type'=>'raw',

                 'value'=>'CHtml::hiddenField("idMiembro[$data->idMiembro]","false", array(\'value\'=>$data->idMiembro))',

                 'htmlOptions'=>array('style'=>'width:0%; display:none'),

                 'headerHtmlOptions'=>array('style'=>'width:0%; display:none')),

            

              /* array('header'=>'ID',

                     'value'=>'CHtml::textField("idMiembro[$data->idMiembro]" , $data->idMiembro, array("width"=>"10%","maxlength"=>"3"))',

                     'type'=>'raw',

                     'htmlOptions'=>array('width'=>'10px', 'style'=>'display:none'),

                   

                   ),*/

		'nombres',

                'apPaterno',

            

                array('name'=>'Class','value'=>'$data->Clase->nombre','type'=>'text'),

                

                array(

		  'name'=>'asistencia', //asistencia

		  'value'=>'CHtml::dropDownList("asistencia[DetalleLista::model()->asistencia]", DetalleLista::model()->asistencia, array("p"=>"Presente","a"=>"Ausente","r"=>"Retardo"),array("class"=>"asistencia-drop"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'asistencia-header'),

		),

            

                           

                array(

		  'name'=>'cuota', //cuota si tiene retardo

		  'value'=>'CHtml::textField("cuota[DetalleLista::model()->cuota]", DetalleLista::model()->cuota,array("class"=>"cuota-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'cuota-header'),

		),

            

                array(

		  'name'=>'estatus_cuota', //estatus de la cuota

		  'value'=>'CHtml::dropDownList("estatus_cuota[DetalleLista::model()->estatus_cuota]",DetalleLista::model()->estatus_cuota, array("pagado"=>"Pagado","pendiente"=>"Pendiente"),array("class"=>"estatus_cuota-drop"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'estatus_cuota-header'),

		),

            

               array(

                 'name'=>'BL',

                 'value'=>'CHtml::checkBox("biblia[DetalleLista::model()->biblia]", DetalleLista::model()->biblia)',

                 'type'=>'raw',

                           

               ),

            

               array(

                 'name'=>'AB',

                 'value'=>'CHtml::checkBox("anio_biblico[DetalleLista::model()->anio_biblico]", DetalleLista::model()->anio_biblico)',

                 'type'=>'raw',

               ),

            

               array(

                 'name'=>'Part',

                 'value'=>'CHtml::checkBox("participacion[DetalleLista::model()->participacion]", DetalleLista::model()->participacion)',

                 'type'=>'raw',

               ),

            

            array(

                 'name'=>'Uni',

                 'value'=>'CHtml::checkBox("uniforme[DetalleLista::model()->uniforme]",DetalleLista::model()->uniforme)',

                 'type'=>'raw',

               ),

               

               

               

               /* array(

		  'name'=>'observaciones', //observaciones

		  'value'=>'CHtml::textField("observaciones","",array("class"=>"observaciones-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'observaciones-header'),

		),*/

           ),

                'emptyText' => 'No puede pasar lista',

	        'summaryText' => '',

)); ?>

Y en el controlador:


public function actionCreate()

	{

		$model=new listaasistencia;

                $member=new miembros;

                $detalle=new detallelista;

                $var="No";

                

                                

                

		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


                if(isset($_POST['miembros']))

                {

                  $var="Si";

                  $member->attributes=$_POST['miembros'];

                  $id = $member->idMiembro;

                }

                

                if(isset($_POST['listaasistencia'], $_POST['detallelista']))

		{

                    

			$model->attributes=$_POST['listaasistencia'];

                        //$member->attributes=$_POST['miembros'];

                        $detalle->attributes=$_POST['detallelista'];

                        

                        

                        $this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle));

		//Vamos a comentar estas lineas de codigo para ver lo que nos está enviando

                        //if($model->save())

				//$this->redirect(array('view','id'=>$model->id));

		}


		$this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle,'var'=>$var 

		));

	}

El problema es que no me envia nada al recibir en el $_POST del controlador en la accion create.

Algúna observación.

Y donde tienes el formulario?

Ese CGridView debería ir dentro de un formulario.

Un saludo.

Así es lagogz, el cgridview está dentro del form, solo que no puse todo el código, a continuación lo pongo


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'listaasistencia-form',

	// Please note: When you enable ajax validation, make sure the corresponding

	// controller action is handling ajax validation correctly.

	// There is a call to performAjaxValidation() commented in generated controller code.

	// See class documentation of CActiveForm for details on this.

	'enableAjaxValidation'=>true,

)); ?>


	<p class="note">Fields with <span class="required">*</span> are required.</p>


	<?php echo $form->errorSummary(array($model, $member, $detalle)); ?>


	<div class="row" style="border: 1px solid transparent; width:200px; float:left; ">

		<?php echo $form->labelEx($model,'tipoReunion'); ?>

		<?php echo $form->dropDownList($model,'tipoReunion', array('Formal'=>'Formal','Informal'=>'Informal'), array('options'=> array('Formal'=>array('selected'=>true)))); ?>

		<?php echo $form->error($model,'tipoReunion'); ?>

	</div>


	<div class="row" style="border: 1px solid transparent; width:420px; float:left;">

		<?php echo $form->labelEx($model,'descripcion'); ?>

		<?php echo $form->textField($model,'descripcion',array('size'=>60,'maxlength'=>250)); ?>

		<?php echo $form->error($model,'descripcion'); ?>

	</div>

        

        

      <!--

	<div class="row">

		<?php echo $form->labelEx($model,'fecha'); ?>

		<?php echo $form->textField($model,'fecha'); ?>

		<?php echo $form->error($model,'fecha'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'creado_por'); ?>

		<?php echo $form->textField($model,'creado_por'); ?>

		<?php echo $form->error($model,'creado_por'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'fecha_creacion'); ?>

		<?php echo $form->textField($model,'fecha_creacion'); ?>

		<?php echo $form->error($model,'fecha_creacion'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'modificado_por'); ?>

		<?php echo $form->textField($model,'modificado_por'); ?>

		<?php echo $form->error($model,'modificado_por'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'fecha_modificacion'); ?>

		<?php echo $form->textField($model,'fecha_modificacion'); ?>

		<?php echo $form->error($model,'fecha_modificacion'); ?>

	</div>

 -->

 

        <?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'listaasistencia-grid',

	'dataProvider'=>$member->Activos(),

        'filter'=>$model,

        'enablePagination'=>false,

	'columns'=>array(

                //'idMiembro', //idmiembro

            

              /*array(

                 'type'=>'raw',

                 'value'=>'CHtml::hiddenField(Miembros::model()->idMiembro,"false", array(\'value\'=>idMiembro[]))',

                 'htmlOptions'=>array('style'=>'width:0%; display:none'),

                 'headerHtmlOptions'=>array('style'=>'width:0%; display:none')),*/

            

              array(

                  'name'=>'member',

                  'type'=>'raw',

                  'value'=>'CHtml::textField("member[$data->idMiembro]", "$data->idMiembro", array("style"=>"width:20px;"))',

                  'htmlOptions'=>array('width'=>'50px', 'style'=>'width:10px;'),

                   

                   ),

		'nombres',

                'apPaterno',

            

                array('name'=>'Class','value'=>'$data->Clase->nombre','type'=>'text'),

                

                array(

		  'name'=>'asistencia', //asistencia

                  'type'=>'raw',

                  'value'=>'CHtml::dropDownList("detallelista[DetalleLista::model()->asistencia]", DetalleLista::model()->asistencia, array("p"=>"Presente","a"=>"Ausente","r"=>"Retardo"),array("class"=>"asistencia-drop"))',

		  'htmlOptions'=>array('class'=>'asistencia-header'),

		),

            

                           

                array(

		  'name'=>'cuota', //cuota si tiene retardo

		  'value'=>'CHtml::textField("detallelista[DetalleLista::model()->cuota]", DetalleLista::model()->cuota,array("class"=>"cuota-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'cuota-header'),

		),

            

                array(

		  'name'=>'estatus_cuota', //estatus de la cuota

		  'value'=>'CHtml::dropDownList("detallelista[DetalleLista::model()->estatus_cuota]",DetalleLista::model()->estatus_cuota, array("pagado"=>"Pagado","pendiente"=>"Pendiente"),array("class"=>"estatus_cuota-drop"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'estatus_cuota-header'),

		),

            

               array(

                 'name'=>'BL',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->biblia]", DetalleLista::model()->biblia)',

                 'type'=>'raw',

                           

               ),

            

               array(

                 'name'=>'AB',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->anio_biblico]", DetalleLista::model()->anio_biblico)',

                 'type'=>'raw',

               ),

            

               array(

                 'name'=>'Part',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->participacion]", DetalleLista::model()->participacion)',

                 'type'=>'raw',

               ),

            

            array(

                 'name'=>'Uni',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->uniforme]",DetalleLista::model()->uniforme)',

                 'type'=>'raw',

               ),

               

               

               

               /* array(

		  'name'=>'observaciones', //observaciones

		  'value'=>'CHtml::textField("observaciones","",array("class"=>"observaciones-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'observaciones-header'),

		),*/

           ),

                'emptyText' => 'No puede pasar lista',

	        'summaryText' => '',

)); ?>

 

 <div class="row buttons" style="border:1px solid transparent;float:left; width:80px; ">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Guardar' : 'Save'); ?>

	</div>

	


<?php $this->endWidget(); ?>

Prueba a cambiar esto:




'name'=>'member',



por esto:




'header'=>'member',



En cada control correspondiente.

Un saludo.

Aun sigo sin poder recibir los datos en el Controller


public function actionCreate()

	{

		$model=new listaasistencia;

                $member=new miembros;

                $detalle=new detallelista;

                $var="";

                

                                

                

		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);

               

                

                if(isset($_POST['listaasistencia'], $_POST['member'], $_POST['detallelista']))

		{

                    

			 $model->attributes=$_POST['listaasistencia'];

                         $member->attributes=$_POST['member'];

                         $detalle->attributes=$_POST['detallelista'];

                         

                                              

                        

                        

                        $var = "si recibe los datos";

                        $i=1;

                        $id = $member->idMiembro;                      

                        

                        

                        

                        $this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle, 'var'=>$var, 'id'=>$id));

                        

		//Vamos a comentar estas lineas de codigo para ver lo que nos está enviando

                        //if($model->save())

				//$this->redirect(array('view','id'=>$model->id));

		}

                

                else{


		$this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle,'var'=>$var 

		));

             }

	}

Hice un if(isset()) para cada modelo, y si entra a ese if me imprime una variable que si está recibiendo


datos de los controles, pero como puedo obtener los valores <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/huh.gif' class='bbc_emoticon' alt='???' />





Mi formulario quedó así:



     <div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'listaasistencia-form',

	// Please note: When you enable ajax validation, make sure the corresponding

	// controller action is handling ajax validation correctly.

	// There is a call to performAjaxValidation() commented in generated controller code.

	// See class documentation of CActiveForm for details on this.

	'enableAjaxValidation'=>true,

)); ?>


	<p class="note">Fields with <span class="required">*</span> are required.</p>


	<?php echo $form->errorSummary(array($model, $member, $detalle)); ?>


	<div class="row" style="border: 1px solid transparent; width:200px; float:left; ">

		<?php echo $form->labelEx($model,'tipoReunion'); ?>

		<?php echo $form->dropDownList($model,'tipoReunion', array('Formal'=>'Formal','Informal'=>'Informal'), array('options'=> array('Formal'=>array('selected'=>true)))); ?>

		<?php echo $form->error($model,'tipoReunion'); ?>

	</div>


	<div class="row" style="border: 1px solid transparent; width:420px; float:left;">

		<?php echo $form->labelEx($model,'descripcion'); ?>

		<?php echo $form->textField($model,'descripcion',array('size'=>60,'maxlength'=>250)); ?>

		<?php echo $form->error($model,'descripcion'); ?>

	</div>

        

        

      <!--

	<div class="row">

		<?php echo $form->labelEx($model,'fecha'); ?>

		<?php echo $form->textField($model,'fecha'); ?>

		<?php echo $form->error($model,'fecha'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'creado_por'); ?>

		<?php echo $form->textField($model,'creado_por'); ?>

		<?php echo $form->error($model,'creado_por'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'fecha_creacion'); ?>

		<?php echo $form->textField($model,'fecha_creacion'); ?>

		<?php echo $form->error($model,'fecha_creacion'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'modificado_por'); ?>

		<?php echo $form->textField($model,'modificado_por'); ?>

		<?php echo $form->error($model,'modificado_por'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'fecha_modificacion'); ?>

		<?php echo $form->textField($model,'fecha_modificacion'); ?>

		<?php echo $form->error($model,'fecha_modificacion'); ?>

	</div>

 -->

 

        <?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'listaasistencia-grid',

	'dataProvider'=>$member->Activos(),

        //'filter'=>$model,

        'enablePagination'=>false,

	'columns'=>array(

                //'idMiembro', //idmiembro

            

              /*array(

                 'type'=>'raw',

                 'value'=>'CHtml::hiddenField(Miembros::model()->idMiembro,"false", array(\'value\'=>idMiembro[]))',

                 'htmlOptions'=>array('style'=>'width:0%; display:none'),

                 'headerHtmlOptions'=>array('style'=>'width:0%; display:none')),*/

            

              array(

                  'header'=>'idMiembro',

                  'type'=>'raw',

                  'value'=>'CHtml::textField("member", $data->idMiembro, array("style"=>"width:20px;"))',

                  'htmlOptions'=>array('width'=>'50px', 'style'=>'width:10px;'),

                   

                   ),

		         

                array(

                    'header'=>'nombres',

                    'value'=>'$data->nombres',

                    'type'=>'text',

                    

                    ),

            

               array(

                   'header'=>'apPaterno',

                   'value'=>'$data->apPaterno',

                   'type'=>'text',

                   ),

                

            

                array('header'=>'Class','value'=>'$data->Clase->nombre','type'=>'text'),

                

                array(

		  'header'=>'asistencia', //asistencia

                  'type'=>'raw',

                  'value'=>'CHtml::dropDownList("detallelista[DetalleLista::model()->asistencia]", DetalleLista::model()->asistencia, array("p"=>"Presente","a"=>"Ausente","r"=>"Retardo"),array("class"=>"asistencia-drop"))',

		  'htmlOptions'=>array('class'=>'asistencia-header'),

		),

            

                           

                array(

		  'header'=>'cuota', //cuota si tiene retardo

		  'value'=>'CHtml::textField("detallelista[DetalleLista::model()->cuota]", DetalleLista::model()->cuota,array("class"=>"cuota-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'cuota-header'),

		),

            

                array(

		  'header'=>'estatus_cuota', //estatus de la cuota

		  'value'=>'CHtml::dropDownList("detallelista[DetalleLista::model()->estatus_cuota]",DetalleLista::model()->estatus_cuota, array("pagado"=>"Pagado","pendiente"=>"Pendiente"),array("class"=>"estatus_cuota-drop"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'estatus_cuota-header'),

		),

            

               array(

                 'header'=>'BL',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->biblia]", DetalleLista::model()->biblia)',

                 'type'=>'raw',

                           

               ),

            

               array(

                 'header'=>'AB',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->anio_biblico]", DetalleLista::model()->anio_biblico)',

                 'type'=>'raw',

               ),

            

               array(

                 'header'=>'Part',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->participacion]", DetalleLista::model()->participacion)',

                 'type'=>'raw',

               ),

            

            array(

                 'header'=>'Uni',

                 'value'=>'CHtml::checkBox("detallelista[DetalleLista::model()->uniforme]",DetalleLista::model()->uniforme)',

                 'type'=>'raw',

               ),

               

               

               

               /* array(

		  'name'=>'observaciones', //observaciones

		  'value'=>'CHtml::textField("observaciones","",array("class"=>"observaciones-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'observaciones-header'),

		),*/

           ),

                'emptyText' => 'No puede pasar lista',

	        'summaryText' => '',

)); ?>

 

 <div class="row buttons" style="border:1px solid transparent;float:left; width:80px; ">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Guardar' : 'Save'); ?>

	</div>

	


<?php $this->endWidget(); ?>


</div><!-- form -->


    

Gracias hasta ahora lagogz, espero y puedan ayudarme...

Buenas, en tu controller haz un :




var_dump($_POST);



Y comprueba los nombres de lo que se envía, pq creo q esto no va a existir:




$detalle->attributes=$_POST['detallelista'];



Pienso que tendrás algo parecido a :




$model->attributes=$_POST['detallelista_asistencia'];

$model->attributes=$_POST['detallelista_cuota'];

...

...



Un saludo.

Gracias lagogz, hasta ahora he logrado enviar todos los datos del cgridview. Excepto los checboxs, en los cuales voy a trbajar ahora.

Ahora lo que sigue. Dejo la solución para que lo vean como quedó:

Esto es lo que hay hasta el momento en el controller:


public function actionCreate()

	{

		$model=new listaasistencia;

                $member=new miembros;

                $detalle=new detallelista;

                $var="";

                $id="";

                $det="";

                $array_miembro=array();

                

                                

                

		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);

               

                

                if(isset($_POST['listaasistencia'], $_POST['member'], $_POST['detallelista']))

		{

                    

			 $model->attributes=$_POST['listaasistencia'];

                         $detalle->attributes=$_POST['detallelista'];

                         

                                              

                        $persona = $_POST['member'];

                        $detalles = $_POST['detallelista'];

                        

                        

                      

                        $var = $_POST['member'];

                        $array_miembro = $_POST['member'];

                        

                        

                        if(count($array_miembro)>0)

                        {

                            foreach ($array_miembro as $i=>$detail)

                            {

                                   

                            }

                        }

                        $id = $_POST['member'][1]; 

                        $det = $_POST['detallelista'];

                        

                        

                        

                        $this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle, 'var'=>$var, 'id'=>$id, 'det'=>$det, 'miembro'=>$array_miembro));

                        

		//Vamos a comentar estas lineas de codigo para ver lo que nos está enviando

                        //if($model->save())

				//$this->redirect(array('view','id'=>$model->id));

		}

                

                else{


		$this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle,'var'=>$var , 'id'=>$id, 'det'=>$det, 'miembro'=>$array_miembro

		));

             }

	}

En el create.php imprimo una tabla con los valores enviados:




<?php

/* @var $this ListaasistenciaController */

/* @var $model listaasistencia */


$this->breadcrumbs=array(

	'Assistance'=>array('index'),

	'Create',

);


$this->menu=array(

	array('label'=>'Assistance', 'url'=>array('index')),

	array('label'=>'Manage Assistance', 'url'=>array('admin')),

);

?>


<h1 class="login">Spending assistance</h1>

<h2><?php var_dump($var); ?></h2>

<p><?php var_dump($det); ?></p>

<p><?php echo $id; ?></p>


<table border="1">

    <tr><td>Datos</td></tr>

    <tr>

        <td>ID</td>

        <td>Descripcion</td>

        <td>Reunión</td>

        <td>Asistencia</td>

        <td>Cuota</td>

        <td>Estatua_Cuota</td>

    </tr>

    <?php for($i=0; $i<count($miembro); $i++): ?>

    <tr>

        

        <td bgcolor="yellow"><?php echo $miembro[$i]; ?></td>

        <td bgcolor="yellow"><?php echo $model->descripcion; ?></td>

        <td bgcolor="yellow"><?php echo $model->tipoReunion; ?></td>

        <td bgcolor="yellow"><?php echo $det[0]; ?></td>

        <td bgcolor="yellow"><?php echo $det[1]; ?></td>

        <td bgcolor="yellow"><?php echo $det[2]; ?></td>

		

        

    </tr>

	<?php  endfor;  ?>

</table>

<?php $this->renderPartial('_form', array('model'=>$model,'member'=>$member,'detalle'=>$detalle)); ?>




Y en el _form.php tengo lo siguiente:


<?php

/* @var $this ListaasistenciaController */

/* @var $model listaasistencia */

/* @var $form CActiveForm */

?>


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'listaasistencia-form',

	// Please note: When you enable ajax validation, make sure the corresponding

	// controller action is handling ajax validation correctly.

	// There is a call to performAjaxValidation() commented in generated controller code.

	// See class documentation of CActiveForm for details on this.

	'enableAjaxValidation'=>true,

)); ?>


	<p class="note">Fields with <span class="required">*</span> are required.</p>


	<?php echo $form->errorSummary(array($model, $member, $detalle)); ?>


	<div class="row" style="border: 1px solid transparent; width:200px; float:left; ">

		<?php echo $form->labelEx($model,'tipoReunion'); ?>

		<?php echo $form->dropDownList($model,'tipoReunion', array('Formal'=>'Formal','Informal'=>'Informal'), array('options'=> array('Formal'=>array('selected'=>true)))); ?>

		<?php echo $form->error($model,'tipoReunion'); ?>

	</div>


	<div class="row" style="border: 1px solid transparent; width:420px; float:left;">

		<?php echo $form->labelEx($model,'descripcion'); ?>

		<?php echo $form->textField($model,'descripcion',array('size'=>60,'maxlength'=>250)); ?>

		<?php echo $form->error($model,'descripcion'); ?>

	</div>

        

        

      <!--

	<div class="row">

		<?php echo $form->labelEx($model,'fecha'); ?>

		<?php echo $form->textField($model,'fecha'); ?>

		<?php echo $form->error($model,'fecha'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'creado_por'); ?>

		<?php echo $form->textField($model,'creado_por'); ?>

		<?php echo $form->error($model,'creado_por'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'fecha_creacion'); ?>

		<?php echo $form->textField($model,'fecha_creacion'); ?>

		<?php echo $form->error($model,'fecha_creacion'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'modificado_por'); ?>

		<?php echo $form->textField($model,'modificado_por'); ?>

		<?php echo $form->error($model,'modificado_por'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'fecha_modificacion'); ?>

		<?php echo $form->textField($model,'fecha_modificacion'); ?>

		<?php echo $form->error($model,'fecha_modificacion'); ?>

	</div>

 -->

 

        <?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'listaasistencia-grid',

	'dataProvider'=>$member->Activos(),

        //'filter'=>$model,

        'enablePagination'=>false,

	'columns'=>array(

                //'idMiembro', //idmiembro

            

              /*array(

                 'type'=>'raw',

                 'value'=>'CHtml::hiddenField(Miembros::model()->idMiembro,"false", array(\'value\'=>idMiembro[]))',

                 'htmlOptions'=>array('style'=>'width:0%<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/wink.gif' class='bbc_emoticon' alt=';)' />,

                 'headerHtmlOptions'=>array('style'=>'width:0%; display:none')),*/

            

              array(

                  'header'=>'idMiembro',

                  'type'=>'raw',

                  'value'=>'CHtml::hiddenField("member[]", "$data->idMiembro", array("value"=>"$data->idMiembro","style"=>"width:20px;"))',

                  'htmlOptions'=>array('width'=>'50px', 'style'=>'width:10px;  display:none'),

				  'headerHtmlOptions'=>array('style'=>'width:0%; display:none'),

                   

                   ),

		         

                array(

                    'header'=>'nombres',

                    'value'=>'$data->nombres',

                    'type'=>'text',

                    

                    ),

            

               array(

                   'header'=>'apPaterno',

                   'value'=>'$data->apPaterno',

                   'type'=>'text',

                   ),

                

            

                array('header'=>'Class','value'=>'$data->Clase->nombre','type'=>'text'),

                

                array(

		  'header'=>'asistencia', //asistencia

                  'type'=>'raw',

                  'value'=>'CHtml::dropDownList("detallelista[]", DetalleLista::model()->asistencia, array("p"=>"Presente","a"=>"Ausente","r"=>"Retardo"),array("class"=>"asistencia-drop"))',

		  'htmlOptions'=>array('class'=>'asistencia-header'),

		),

            

                           

                array(

		  'header'=>'cuota', //cuota si tiene retardo

		  'value'=>'CHtml::textField("detallelista[]", DetalleLista::model()->cuota,array("class"=>"cuota-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'cuota-header'),

		),

            

                array(

		  'header'=>'estatus_cuota', //estatus de la cuota

		  'value'=>'CHtml::dropDownList("detallelista[]",DetalleLista::model()->estatus_cuota, array("pagado"=>"Pagado","pendiente"=>"Pendiente"),array("class"=>"estatus_cuota-drop"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'estatus_cuota-header'),

		),

            

               array(

                 'header'=>'BL',

                 'value'=>'CHtml::checkBox("detallelista[]", DetalleLista::model()->biblia)',

                 'type'=>'raw',

                           

               ),

            

               array(

                 'header'=>'AB',

                 'value'=>'CHtml::checkBox("detallelista[]", DetalleLista::model()->anio_biblico)',

                 'type'=>'raw',

               ),

            

               array(

                 'header'=>'Part',

                 'value'=>'CHtml::checkBox("detallelista[]", DetalleLista::model()->participacion)',

                 'type'=>'raw',

               ),

            

            array(

                 'header'=>'Uni',

                 'value'=>'CHtml::checkBox("detallelista[]",DetalleLista::model()->uniforme)',

                 'type'=>'raw',

               ),

               

               

               

               /* array(

		  'name'=>'observaciones', //observaciones

		  'value'=>'CHtml::textField("observaciones","",array("class"=>"observaciones-field"))',

		  'type'=>'raw',

		  'htmlOptions'=>array('class'=>'observaciones-header'),

		),*/

           ),

                'emptyText' => 'No puede pasar lista',

	        'summaryText' => '',

)); ?>

 

 <div class="row buttons" style="border:1px solid transparent;float:left; width:80px; ">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Guardar' : 'Save'); ?>

	</div>

	


<?php $this->endWidget(); ?>


</div><!-- form -->

Gracias lagogz por tu ayuda, hasta el momento vamos bien… saludos

Realizando algunos cambios en la forma de enviar los datos al controlador, les muestro una linea de los controles que envío:




  array(

     'header'=>'asistencia', //asistencia

     'type'=>'raw',

     'value'=>'CHtml::dropDownList("detallelista[$data->idMiembro][]", DetalleLista::model()->asistencia,  array("p"=>"Presente","a"=>"Ausente","r"=>"Retardo"),array("class"=>"asistencia-drop"))',

     'htmlOptions'=>array('class'=>'asistencia-header'),

		),

  

De esta forma envío un arreglo multidimensional, para que sepa a que idMiembro pertenece cada control.

y en mi controlador tengo lo siguiente:




   if(isset($_POST['listaasistencia'], $_POST['detallelista']))

		 {

                //Atributos del modelo tabla contlistaasistencia                    

			    $model->attributes=$_POST['listaasistencia'];

                $model->fecha=  date("Y-m-d H:i:s");

                         

                         

                         $array_detallelista=$_POST['detallelista'];

                         

                        

                         if($model->save())

						 

                             $lastId = $model->primaryKey;  //Obtenemos el id insertado

                         

                            foreach($array_detallelista as $id=>$array)

                            {

                               $detalle->idMiembro=$id;

                               $detalle->id=$lastId;

                               $detalle->asistencia=$array[0];

                               $detalle->cuota=$array[1];

                               $detalle->estatus_cuota=$array[2];

                               $detalle->biblia=$array[3];

                               $detalle->anio_biblico=$array[4];

                               $detalle->participacion=$array[5];

                               $detalle->uniforme=$array[6];

                               

                               $detalle->save();

                            }

                                              

                                

                        $this->render('create',array(

			'model'=>$model,'member'=>$member,'detalle'=>$detalle,'detail'=>$array_detallelista));

                        

		//Vamos a comentar estas lineas de codigo para ver lo que nos está enviando

                        //if($model->save())

				//$this->redirect(array('view','id'=>$model->id));

		}

  

Por si alguien llegará a necesitar este tipo de guardar datos de un CGridView

O sea q solucionado,no?

Un saludo.

Así es.¿Como le hago para poner como solucionado este POST?

Muchas gracias por informacion me sirvio mucho