2016-03-29 22 views
0

Yii2'de, hem div içeren ayrıntılar ekranlarının seçiminde 2 bağımlı açılır bir form var. Sağlanmışsa ve seçili değerden birini atandığında seçilen değeri atamalıyım. Soru, ikinci açılır menüyü seçilen değerle nasıl atayacağınızdır.Yii2 Bağımlı Düşüş Üzerine Seçili Değer Atama

<div class="col-sm-6"> 
<?= $form->field($SasModel, 'all_batch_id')->dropDownList(ArrayHelper::map(app\modules\course\models\Batches::find()->where(['is_status' => 0])->all(),'batch_id','batch_name', 'batchCourse.course_name'), 
    [ 
     'options' => [$_GET['batchid'] => ['Selected'=>'selected']], 
     'prompt'=>'Select Batch', 
     'onchange'=>' 
      $.get("'.Url::toRoute('subjectsallocatesem/studsection').'", { id: $(this).val() }) 
       .done(function(data) { 
        $("#'.Html::getInputId($SasModel, 'semester_id').'").html(data); 
       } 
      ); 
     '  
    ]); 

?> 
</div> 

<div class="col-md-6"> 
<?= $form->field($SasModel, 'semester_id')->dropDownList(
    [ 'prompt'=>'---Select Semester---' ], 
    [ 'onchange'=>'this.form.submit()' ] 
); ?> 
</div> 

cevap

0

Dönem modelinde yöntemi oluşturun:

public static function getBatchSemster($batch_id = NULL) 
{ 

    if(!empty($batch_id)) { 
     $semester = self::find()->andWhere(['batch_id_in_semester_model' => $batch_id])->all(); 
     $results = yii\helpers\ArrayHelper::map($semester, 'sem_id', 'sem_name'); 
     return $results; 
    } 
    else { 
    return $results[]; 
    } 
} 

Değişim Formu: Ben ikinci açılır menüde dönem listesini doldurma ile hiçbir sorunları yaşıyorum

<div class="col-md-6"> 
    <?= $form->field($SasModel, 'semester_id')->dropDownList(SemesterModel::getBatchSemster($SasModel->all_batch_id), 
    [ 'prompt'=>'---Select Semester---' ], 
    [ 'onchange'=>'this.form.submit()' ], 
    ); ?> 
</div> 
+0

. Sorun seçilen alan ile. "'Options' => [$ _GET ['batchid'] => ['Selected' => 'selected']] 'i seçtim," ilk açılana seçilen değeri eklemek için. Her şey, ikinci açılan seçilen değer hariç mükemmel çalışıyor. –

+0

@TalhaZahid. tüm sömestr ile ilgili değil, yöntem eşleştirilmiş toplu iş kimliği ile bir dönem adı olsun. –

+0

Önerilerinizi denedim, hata verdi "Geçersiz argüman foreach() için sağlandı") in yii2/helpers/BaseHtml.php foreach ($ item as $ anahtar => $ değer) { if (is_array ($ value)) { $ groupAttrs = isset ($ gruplar [$ key])? $ gruplar [$ key]: []; $ groupAttrs ['label'] = $ key; $ attrs = ['options' => $ options, 'groups' => $ groups, 'encodeSpaces' => $ encodeSpaces, 'encode' => $ encode]; $ content = statik :: renderSelectOptions ($ seçim, $ değer, $ attrs); –