Skip to main content

Yii2 . FORM How to make dependant drop down. Where second drop downs values are dependant on first drop down selection

In form file :



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?= $form->field($model, 'country_id')->dropDownList(["5"=>'USA', "6"=>"Pakistan"],
        ['prompt'=>'Select Country',
            'onchange'=>'
                $.get( "'.\yii\helpers\Url::toRoute('/site/getstates').'", { id: $(this).val() } )
                      .done(function( data ) {
                                $( "#'.Html::getInputId($model, 'state_id').'" ).html( data );
                            }
                        );
            ','class' => 'form-control'
        ]
    ); ?>
    <?= $form->field($model, 'state_id')
        ->dropDownList(
            [
                'prompt'=>'Select State',
            ]
        );
    ?>





In siteController.php file add a function like below:




public function actionGetstates($id){
        $states = StateProvince::find()->where(
            [
                'country_id'=>$id
            ]
        )->all();

        $returnStr = "";
        foreach ($states as $state){
            $returnStr.="<option value='{$state->state_id}'>{$state->name}</option>";
        }

        return $returnStr;
    }


Popular posts from this blog

Yii, return to previous url after login or logout

If you want to return to your previous url after login or logout try this : <?php $this -> redirect (Yii :: app () -> request -> urlReferrer ); ?> To set the return url to be the url that was before the login page or registeration page was called you can put following code in views/layouts/main.php file : <?php //this checks id the controller action is not 'login' then it keeps the current url in returnUrl if (CController :: getAction () -> id != 'login' ) { Yii :: app () -> user -> setReturnUrl (Yii :: app () -> request -> getUrl ()); } ?>

Yii2: Using csrf token

Yii2: Using csrf token First, if you do not understand what is the CSRF token? and why should we use it, please refer to the following link : https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) One of the new features of Yii2 is CSRF validation enabled by default. If you use ajax or basic form as follows : <form action='#' method='POST'> ........... </form> You will get an error exception : Bad Request (#400): Unable to verify your data submission That is because you do not submit csrf token. The easiest way if you dont care about csrf just disable it in main config : 'components' => [ 'request' => [ .... 'enableCsrfValidation'=>false, ], ..... ], Or in Controller : public function beforeAction($action) { $this->enableCsrfValidation = false; return parent::beforeAction($action); } So how to use Csrf Validation for your strong security website: * Wi