Créer Deux Dropdownlist Dépendant

Bonjour,

Après plusieurs heure de recherche et de teste divers grâce au forum yii (anglais), je n’arrive toujours pas a relier deux dropDownList dépendant.

Explication:

-j'ai trois table: 

rubrique_1(id_rubrique_1, nom_rubrique_1),

                   rubrique_2(id_rubrique_2, id_rubrique_1, nom_rubrique_2), 


                   rubrique_3 (id_rubrique_1, id_rubrique_1, id_rubrique_2, nom_rubrique_3)





-Quand je veux créer une rubrique_3, j'aimerai que mes dropDownList sois lier pour plus de simplicité a l'entrer de nouvelle donnée.





-voici mon code de vue (_form.php)

<div class="row">

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

		<?php echo $form->dropDownList($model,'ID_RUBRIQUE_1',CHtml::listData(rubrique1::model()->findAll(),'ID_RUBRIQUE_1','NOM_RUBRIQUE_1'),

			array('empty'=> "Quelle environement principal?",

				'ajax' => array(

							'type'=>'POST',

							'url' =>CController::createUrl('rubrique3/DynamicRubrique3'),

							'data'=>array ('ID_RUBRIQUE_1'=>'js:this.value'),

							'update'=>'#'.CHtml::activeId($model, 'ID_RUBRIQUE_2')

							

						)));?>

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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model, 'ID_RUBRIQUE_2',array('empty'=>'Select')); ?>

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

	</div>

-Voici mon code controller

	public function ActionDynamicRubrique3()

	{

		$data=Rubrique2::model()->findAllBySQL('select ID_RUBRIQUE_2, NOM_RUBRIQUE_2 from RUBRIQUE_2 where ID_RUBRIQUE_1='.$_POST['ID_RUBRIQUE_1']);

		$data=CHtml::listData($data, 'ID_RUBRIQUE_2', 'NOM_RUBRIQUE_2');

		foreach($data as $value=>$name)

		{

			echo CHtml::tag('option',

            array('value'=>$value),CHtml::encode($name),true);

		}

	}

J’ai tester plein de méthode différente, mais aucune ne bouge et j’ai impression avec des test qu’il ne rentre pas dans mon controller.

Voila si vous avez déjà coder quelque chose équivalent pouvez vous m’aider merci d’avance.

Salut,

Je comprends vaguement l’idée, sans trop rentrer dans les détails.

Tu as l’impression qu’il ne rentre pas dans ton controller, as tu pensé à ouvrir une console pour voir ce qu’il te dit ? (quand je rencontre des problèmes avec Ajax, Firebug est mon meilleur ami ^^)

Il se peut que tu aies tout simplement une erreur 403, ce qui est très simple à régler (et ce que j’espère, ça nous évitera de chercher trop profondémment xD)

Je regarder avec firebug aucune erreur. Quand je met un exit(); dans le code après un echo il m’affiche rien et ne stop rien…

J’ai regarder plusieurs topic sur le forum en rapport mon code a l’air juste mais j’arrive pas a avoir une seul réaction entre les deux…

Bon, j’ai pas de réponse immédiate à te donner, mais si tu veux on peut y réfléchir ensemble, ce sera plus productif.

Quand tu sélectionnes un item de ta première DropDownList, ta console t’affiche bien un appel de type:

POST http://127.0.0.1/monApli/Controller/Action/params ?

Le fait que ton exit n’affiche rien me laisse pensé que tu n’appelles pas ta méthode

Bon après plein de modification j’ai enfin réussi a avoir l’erreur 403… m’on appel est pas bon ta une idée sur quoi changer?

403 signifie que tu n’as pas les droits pour accéder à la méthode

Tu as bien ajouté le nom de ta méthode à l’accessRules ?

AccesRules a configurer dans le controller.

comme ceci (pour mon code):


			

array('allow',

'actions'=>array('DynamicRubrique3'),

'users'=>array('*'),

),

Merci beaucoup .