Clistview

hello,

I don’t know how to retrieve post data from a clistView.

the list view :




<?php 

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

    'action' => Yii::app()->createUrl('AdADroita/enregistrer'),

    'method' => 'post',

   

));

 $this->widget('zii.widgets.CListView', array( //$this->widget('zii.widgets.grid.CGridView', array( 

	'id'=>'ad-adroita-list',

	'dataProvider'=>$model->search(),

    'itemView'=> '_droit', 

    'viewData' => array('fkProfil' =>$model->fk_profil),

	

)); 

 

  

 

 ?> 

 <br />

<?php echo CHtml::submitButton(yii::t('view','boutonEnregistrer'), array('class' => 'btn btn-primary')); ?>&nbsp;

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



the itemView :




<?php

    $page = AdAdroita::returnModelPage($data->page_id);

 

    if (empty($fkProfil)){

        $dataProfil = AdProfil::findAllProfils();

    }else{

        $dataProfil = AdProfil::findUnProfil($fkProfil);

    }

    

    if ($index==0){

         echo '<div class="droitTitre">';

         echo '<div class="adroitaTitre">';

         echo '<span>'.Yii::t('view', 'Page').'</span>';

         echo '</div>';

         foreach ($dataProfil as $profil) {

            echo '<div class="adroitaTitre">';

            echo $profil;

            echo '</div>';

        }

         echo '</div>'; 

    }

   

    echo '<div class="droit">';

   

    echo '<div class="adroita">';

    echo '<span>'.$page->titrePage.'</span>'.' <br />';

    echo $page->page_id.' <br />';

    echo '</div>';    

    

    foreach ($dataProfil as $profil) {

        $modelDroit = new AdAdroita();

        $modelDroit->fkProfil = $fkProfil;

        $listDroits = AdDroit::model()->findAll();

        echo '<div class="adroita">';

         foreach ($listDroits as $value) {

            $value->fkProfilFkPageFkDroit=$value->droit_id."|".$profil."|".$page->page_id;

        }

        $dataDroits = CHtml::listData($listDroits, 'fkProfilFkPageFkDroit', 'nom');

        echo CHtml::activeCheckBoxList($modelDroit, '[' . $index . ']' .'listDroits', $dataDroits,array('style'=>'width:25px'));

        echo '</div>';

    }

    echo '<div style="clear:both;">';

    echo '</div>';

?>

</div>    



and the controller :




 public function actionEnregistrer()

	{   

        if(isset($_POST['listDroits'])){

            foreach ($_POST['listDroits'] as $value) {

               // foreach ($value['listDroits'] as $i) {

                echo '<pre>';

                print_r($value);

                echo '</pre>';

              //  }

            }

            exit();

        }


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

			'model'=>$model,

		));

	}



I am complety lost with that.

Maybe the CListView is not good for that ?

I includ in this post a printscreen of my page.

thanks

Nath who is sorry for his bad english :wink:

first try to give a var_dump to POST array to see his content.


var_dump($_POST);

oh thank you, I didn’t know this code.

the result is that :

But me, I would like to have as many AdAdroit as activeCheckBoxList

Dear Friend

I have a scenario.

As an administrator I have to classify the posts in a blog.

I have to classify them as "published’,‘archived’ or in ‘draft’ by modifying property status.




<div class="formSeeni">

<?php echo CHtml::beginForm(); ?>

<?php foreach($dataProvider->getData() as $data) { ?>

<div class="view">

     <div style="float:right;">

     <?php echo "<b>".CHtml::encode('Modify')."</b>"."</br>";?>

	<?php echo 

CHtml::radioButtonList("status[$data->id]",$data->status,array(1=>'draft',2=>'publish',3=>'archive'),array('template'=>'{input}{label}','separator'=>' | '),array()); ?>

	</div>

	

	<b><?php echo CHtml::encode($data->getAttributeLabel('title')); ?>:</b>

	<?php echo CHtml::link(CHtml::encode($data->title), array('view', 'id'=>$data->id)); ?>

	<br />


	<b><?php echo CHtml::encode($data->getAttributeLabel('status')); ?>:</b>

	<?php echo CHtml::encode(Lookup::model()->findByAttributes(array('code'=>$data->status,'type'=>'PostStatus'))->name); ?>

	<br />


	<b><?php echo CHtml::encode($data->getAttributeLabel('tags')); ?>:</b>

	<?php echo implode(',',$data->tagLinks()); ?>

	<br />


	


	<b><?php echo CHtml::encode($data->getAttributeLabel('create_time')); ?>:</b>

	<?php echo CHtml::encode(date('D,M d,Y  h:i:A',$data->create_time)); ?>

	<br />


	<b><?php echo CHtml::encode($data->getAttributeLabel('update_time')); ?>:</b>

	<?php echo CHtml::encode(date('D,M d,Y  h:i:A',$data->update_time)); ?>

	<br />




	<b><?php echo CHtml::encode($data->getAttributeLabel('author')); ?>:</b>

	<b><?php echo CHtml::encode($data->author->username); ?></b>

	<br />




</div>


<?php } ?>

<?php if(count($dataProvider->getData())>0) echo CHtml::submitButton('Save'); ?>

<?php echo CHtml::endForm(); ?>


</div>




This is the logic in the controller.




public function actionClassify() 

{

	$dataProvider=new CActiveDataProvider('Post');

	

	if(!isset($_POST['status']))

	{	$this->render('classify',array(

			'dataProvider'=>$dataProvider,

			));

	}

	

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

	{

		foreach($_POST['status'] as $i=>$j) 

		{

			if($i)

			{

				$model=$this->loadModel($i);

				$model->status=$j;

				$model->update();

			}

		}

		

		$this->redirect(array('post/index'));

	}

		

}

		



I have utilized $data->id to differentiate name attributes in the form.

The same id helped to load models in controller.

3639

blog.png

thank you very much, that’s help me a lot :)