Создать зависимый выпадающий список в Yii2

Это два поля активной формы в Yii2.

<?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen']) ?>

<?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes']) ?>

Когда я нажимаю Screen, второе поле должно измениться на Yes. Когда я нажимаю Module, оно должно измениться на No. Мне нужно сохранить только 0 или 1 в БД.

Как я могу это сделать?


person Beginner    schedule 26.06.2018    source источник


Ответы (2)


Что ж, вам нужно привязать событие change к первому раскрывающемуся списку, используя javascript/jquery, как показано ниже. добавьте скрипт поверх вашего представления и укажите id в обоих раскрывающихся списках.

$this->registerScript("
    $('#navigation_type').on('change',function(){
      if($(this).val() == 'Module'){
          $('#showInUrl').val(0);
       }else{
          $('#showInUrl').val(1);
       }
});",\yii\web\View::POS_END);

<?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen'],['id'=>'navigation_type']) ?>

<?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes'],['id'=>'showInUrl' ])?>

Помимо приведенного выше решения, вам следует изучить DepDropDown от kartik, который сводит ваши усилия к минимуму. максимум, и вам просто нужно интегрировать, и он отлично работает.

person Muhammad Omer Aslam    schedule 26.06.2018
comment
будет ли он хранить 0,1 для «нет», «да» в БД? - person Beginner; 26.06.2018
comment
вам нужно изменить значения для раскрывающегося списка showInUrl на 0 и 1 вместо Yes и No, чтобы сделать это @BeginnerDev, я отредактировал скрипт, смотрите сейчас - person Muhammad Omer Aslam; 26.06.2018
comment
я заменил $('#showInUrl').val('No'); на $('#showInUrl').val(0); и $('#showInUrl').val('Yes'); на $('#showInUrl').val(1); теперь можете проверить, все ли работает правильно - person Muhammad Omer Aslam; 26.06.2018

person    schedule
comment
Для зависимых выпадающих списков у kartik уже есть отдельный плагин, расширяющий select2 demos.krajee.com/widget- details/depdrop , в чем смысл использования select2 вместо зависимого выпадающего списка, если в конце вам нужно выбирать раскрывающиеся списки вручную, как в простом раскрывающемся списке - person Muhammad Omer Aslam; 28.06.2018