Problem With Dependent Dropdown Lists

Hello all,

I’m in the same situation as this person.

Dependent DropDown List

I took his code and I adapted it with the name of my tables.

But nothing happens.

My function in the controller is not called.

Here is my code :

My Controller :




public function actionInscription() {

        $model = new InscriptionForm;

        

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

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

              

            if($model->validate()) {

                $subject = "Plateforme de rendu de devoir : Inscription d'un etudiant";

                $body = $model->nom . ' ' . $model->prenom . ' vient de remplir un formulaire d\'inscription. Veuillez le valider';

                $headers = "From: {$model->email}\r\nReply-To: {$model->email}";

                mail(Yii::app()->params['adminEmail'],$subject,$body,$headers);				

                $user = new User;

                $user->attributes = $_POST['InscriptionForm'];

                $user->password = $model->hashPassword($_POST['InscriptionForm']['password'], $_POST['InscriptionForm']['email']);  

                    

                if ($user->save())

                    Yii::app()->user->setFlash('inscription','Merci de vous être inscrit. Votre compte va être activé rapidement');

                else

                    Yii::app()->user->setFlash('inscription','Une erreur s\'est produite pendant l\'inscription, veuillez rééssayer');

                

		$this->refresh();

            }

        }

        $this->render('inscription', array('model' => $model));

    }

    

    public function actionDynamicSpecialite() {

        $specialite_id = $_POST['inscription']['cleFiliere'];

        $data = Specialite::model()->findAll(

                'specialite_id=:specialite_id',

                array(

                    ':specialite_id'=> $specialite_id));

        

        $data = CHtml::listData($data,'id','intitule');

        foreach($data as $value => $intitule) {

            echo CHtml::tag('option',

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

        }

    }

    

    protected function performAjaxValidation($model) {

        if(isset($_POST['ajax']) && $_POST['ajax']==='inscription-form') {

            echo CActiveForm::validate($model);

            Yii::app()->end();

        }

    }



My Model :




class InscriptionForm extends CActiveRecord

{

    public $nom;

    public $prenom;

    public $email;

    public $cleFiliere;

    public $cleSpecialite;

    public $clePromotion;

    public $login;

    public $password;

    public $password_repeat;

    public $verifyCode;


    public static function model($className=__CLASS__) {

        return parent::model($className);

    }


    public function tableName() {

        return 'user';

    }


    public function rules() {

        return array(

            array('nom, prenom, email, cleFiliere, cleSpecialite, clePromotion, login, password, password_repeat', 'required'),

            array('email', 'email'),

            array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),

            array('login', 'unique'),

            array('password', 'compare', 'compareAttribute'=>'password_repeat'),

        );

    }


    public function attributeLabels() {

        return array(

            'nom' => 'Nom',

            'prenom' => 'Prénom',

            'email' => 'Email',

            'login' => 'Login',

            'password' => 'Mot de passe',

            'verifyCode' => 'Verification Code',

            'password_repeat' => 'Retapez votre mote de passe',

            'cleFiliere' => 'Parcour suivie',

            'cleSpecialite' => 'Spécialité suivie',

            'clePromotion' => 'Promotion en cours',

        );

    }

}



And my view :




<?php

    $this->pageTitle=Yii::app()->name . ' - Inscrivez-vous';

    $this->breadcrumbs=array(

        'inscription',

    );

?>


<h1>Formulaire d'inscription</h1>


<?php

    if(Yii::app()->user->hasFlash('inscription')):

?>


    <div class="flash-success">

	<?php echo Yii::app()->user->getFlash('inscription'); ?>

    </div>


<?php

    else:

?>


<p>

    Veuillez vous inscrire et attendre l'activation de votre compte avant de vous connectez.

</p>


<div class="form">


    <?php

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

            'id'=>'inscription-form',

            'enableClientValidation'=>true,

            'clientOptions'=>array(

                'validateOnSubmit'=>true,

            ),

            'enableAjaxValidation'=>true,

        ));

    ?>


    

    

    <?php

    $filiere = CHtml::listData(Filiere::model()->findAll(), 'id','intitule');

    echo $form->dropDownList($model,'cleFiliere', $filiere, array('prompt'=>'Choisir un parcours...'),

        array(

            'ajax' => array(

                'type' => 'POST',

                'url' => CController::createUrl('site/dynamicSpecialite'),

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

            )

        )

    ); 


    echo $form->dropDownList($model,'cleSpecialite', array());

    ?>

 

    <div class="row buttons">

        <?php echo CHtml::submitButton('S\'inscrire',array('class'=>'boutonValider')); ?>

        <?php echo CHtml::button('Annuler',array('submit' => array('gestionDevoir/index'),'class'=>'bouton')); ?>

    </div>


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


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


<?php endif; ?>



Thanks in advance for your help.

Best Regards

Arteckos

In your form.php, add this and try.




<?php

    $filiere = CHtml::listData(Filiere::model()->findAll(), 'id','intitule');

    echo $form->dropDownList($model,'cleFiliere', $filiere, array('prompt'=>'Choisir un parcours...'),

        array(

            'ajax' => array(

                'type' => 'POST',

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

                'url' => CController::createUrl('site/dynamicSpecialite'),

                'update'=>'#cleSpecialite'

            )

        )

    ); 


    CHtml::dropDownList('cleSpecialite','',array(),array('prompt'=>'Select')

    ?>



I had the same problem or the past 2 days. Yep I’m an absolute beginner. Thanks