checkbox

Ho un form che fa un insert in due model diversi, ma non riesco a passare il valore della checkbox!,sulla form nella prima parte inserisco i campi che dovranno inserire sul primo model (attivita), dopo carico la lista dei checkbox(model fixgruppi), selezionando questi, faccio un ciclo per vedere quanti valori sono stati selezionati, passo questi valori al model guppo…, facendo un inserimento multiplo…, ma mi da "errore" o meglio mi dice che il valore di input non è valido…, quindi al post non glielo passa proprio

View attivita




<h1>Login</h1>


<p>Please fill out the following form with your login credentials:</p>


<div class="form">

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

	'id'=>'attivita-form',

	'enableClientValidation'=>true,

        'action'=>Yii::app()->createAbsoluteUrl('register/attivita/create'),

        'htmlOptions' => array( 'multiple' => 'multiple', 'enctype' => 'multipart/form-data','class'=>'form-horizontal'),

)); ?>


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

<?php echo $form->errorSummary(array($attivita,$fixgroup)); ?>

	




	


	<div class="form-group">

 	<?php echo $form->labelEx($attivita,'nome',array('class'=>'col-md-2 control-label')); ?>

        <div class="col-md-10">

        <?php echo $form->textField($attivita,'nome',array('class'=>'form-control input-default','placeholder'=>'Inserisci Nome Attività','id'=>'nome')); ?>

        </div>

    <?php echo $form->error($attivita,'nome'); ?>

    

    </div>


	<div class="form-group">

 	<?php echo $form->labelEx($attivita,'descrizione',array('class'=>'col-md-2 control-label')); ?>

        <div class="col-md-10">

		<?php echo $form->textArea($attivita,'descrizione',array('class'=>'form-control input-default','placeholder'=>'Descrione','id'=>'descrizione','onchange'=>'TestOnTextChange()')); ?>

		<?php echo $form->error($attivita,'descrizione'); ?>

        </div>

    </div>




<!--- CARICO LE CHECKBOX DAL DATABASE--->

        <?php 

       $type_list=CHtml::listData(Fixgruppi::model()->findAll(),'id','categorie');

	echo $form->checkBoxList($fixgroup,'categorie',$type_list);

        ?>

        

  <div class="conferma">

<?php echo CHtml::submitButton($attivita->isNewRecord ? 'Create' : 'Save',array('class'=>'btn btn-primary','id'=>'conferma')); ?>

</div>

        

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

</div>






CONTROLLER Attivita




public function actionCreate()

	{

    $attivita = new Attivita;

    $gruppo   = new Gruppo;

    $fixgroup = new Fixgruppi;

 

    $this->performAjaxValidation(array($attivita,$fixgroup));

    if(isset($_POST['Attivita'],$_POST['Fixgruppi']))

    {

        // input data to $attivita

        $attivita->attributes=$_POST['Attivita'];

        $attivita->password=$attivita->hashPassword($_POST['Attivita']['password'],$session=$attivita->generateSalt());

	$attivita->session=$session;

        

        // input data fixgruppi checkbox

       $fixgroup->attributes=$_POST['Fixgruppi']; 

       

        // validate BOTH $attivita and $fixgruppi

        $valid=$attivita->validate();

        $valid=$fixgroup->validate() && $valid;

 

        if($valid)

        {

            // use false parameter to disable validation

            $attivita->save(false);

            

         /*$fixgroup->attributes=$_POST['Fixgruppi'];*/

            

        foreach($fixgroup->categorie as $checkbox_id){

            echo $checkbox_id;

         

	    

	

            $gruppo->nome_gruppo = $checkbox_id;

            $gruppo->categorie = $checkbox_id;

            

            

            $gruppo->save(false);

            

	}

 

            $this->redirect('index');

        }

    }

    $this->render('create',array('attivita'=>$attivita,'fixgroup'=>$fixgroup));



help

Ho corretto il foreach che era




if($valid)

        {

            // use false parameter to disable validation

            $attivita->save(false);

            

         /*$fixgroup->attributes=$_POST['Fixgruppi'];*/

            

        foreach($fixgroup->categorie as $checkbox_id){

            echo $checkbox_id;

         

            

        

            $gruppo->nome_gruppo = $checkbox_id;

            $gruppo->categorie = $checkbox_id;

            

            

            $gruppo->save(false);

            

        }






in




foreach( $_POST["Fixgruppi"]["id"] as $value){


                               $gruppo->nome_gruppo = $value;

                               $gruppo->categorie =   count($value);

            

            

                            $gruppo->save(false);    

                            

                       }

               




ora riesco a prendere il valore della checkbox, però ho due checkbox che vengono create sulla lista, se le seleziono tutte e due…prende solo il valore dell’ultima e di conseguenza mi esegue solo una insert

forse devi inserire

$gruppo = new Gruppo;

all’interno della foreach, e non all’inizio della action?

si anche questo è vero, ma comunque sia dentro il foreach ho messo il conteggio degli array, e me ne da uno quando invece sono due, prende sempre l’ultimo…non mi quadra eppure faccio il ciclo…

genero le ckeckbox, che sono due, se seleziono tutte e due, mi prende solo l’ultima, se seleziono solo la prima…mi prende solo la prima