2016-02-18 3 views
1

Я пытаюсь создать зависимое выпадающее меню в yii2 basic, но оно не работает должным образом. Ниже приведен код для создания выпадающего менюзависимый drop down in yii2

<?= $form->field($model,'grp_name')->dropDownList(
     ArrayHelper::map(Maingroup::find()->all(), 'id', 'name'), 
     [ 
      'prompt'=>'Select your group', 
      'onchange'=>' $.post("index.php?r=memberdetail/lists&id='.'"+$(this).val(), function(data) { 
              $("select#memberdetail-sub_grp").html(data); 
             });' 
     ]); ?> 
    <?= $form->field($model,'sub_grp')->dropDownList(
     ArrayHelper::map(NewGroup::find()->all(), 'id', 'group_num'), 
     [ 
      'prompt'=>'Select your sub-group', 

     ]); ?> 

моих списки действия в контроллере memberdetail является

public function actionLists($id) 
    { 
     $countsubgroup = NewGroup::find() 
      ->where(['group_name' => $id]) 
      ->count(); 

     $subgroup = NewGroup::find() 
      ->where(['group_name' => $id]) 
      ->all(); 

     if ($countsubgroup > 0) { 
      foreach ($subgroup as $name) { 
       echo "<option value='" . $name->id . "'>" . $name->group_num . "</option>"; 
      } 
     } else { 
      echo "<option> - </option>"; 
     } 

    } 

что на самом деле происходит эта проблема, я думаю, из-за которой он не собирается к контроллеру memberdetail и не вызывая в функции actionLists общественного пользования ($ ID) enter image description here

ответ

1

Простой способ создать Зависимые DropDown

первый гр reate DependentController.php в папку controller как

<?php  
namespace app\controllers; 
use yii\helpers\Html; 
use Yii; 

class DependentController extends \yii\web\Controller 
{ 
    public function actionGetsubgroup($id) 
    { 
     $rows = NewGroup::find()->where(['group_name' => $id]) 
     ->all(); 
     echo "<option value=''>---Select State---</option>";  
     if(count($rows)>0){ 
      foreach($rows as $row){ 
       echo "<option value='$row->id'>$row->group_num</option>"; 
      } 
     } 
     else{ 
      echo ""; 
     } 
    } 
} 

Ваш _form.php

<?= $form->field($model,'grp_name')->dropDownList(ArrayHelper::map(Maingroup::find()->all(), 'id', 'name'), 
[ 
    'prompt'=>'Select your group', 
    'onchange'=>'$.get("'.Url::toRoute('dependent/getsubgroup').'", { id: $(this).val() }).done(function(data) { $("#'.Html::getInputId($model,'sub_grp').'").html(data); });'  
]); ?> 

<?php if(!empty($model,'sub_grp')) : ?> 
    <?= $form->field($model,'sub_grp')->dropDownList(ArrayHelper::map(NewGroup::find()->all(), 'id', 'group_num'), ['prompt' => '---Select Sub-Group---']); ?> 
<?php else : ?> 
    <?= $form->field($model,'sub_grp')->dropDownList([], ['prompt' => '---Select Sub-Group---']); ?> 
<?php endif; ?> 
+0

Пожалуйста, вы можете проверить ваш код для некоторых синтаксических ошибок. после копирования кода он показывает красные строки ошибок в некоторых местах в _form.php –

+0

покажите мой обновленный код и попробуйте ... – vishuB

+0

ваша проблема решена ?? – vishuB

0

Если вы включили довольно URL, а не получать index.php в вашем сайте URL, то вы должны изменить после действий, как показано ниже.

'onchange'=>' $.post("lists?id='.'"+$(this).val(), function(data) { 
             $("select#memberdetail-sub_grp").html(data); 
            });' 

Если нет, то пожалуйста, укажите, какие именно ошибки вы получаете в 400 Ошибочный запрос