2016-07-29 3 views
1

Ich benutze diesen Code auf backend/views/_form.phpWie abhängig Drop-Down in yii2

<?php $CoursesCat = ArrayHelper::map(CoursesCat::find()->all(),'id', 'cat_name'); 
$CoursesSubcat = ArrayHelper::map(CoursesSubcat::find()->all(),'id', 'name'); 
$form = ActiveForm::begin(); ?> 

<?php 
echo $form->field($model, 'cat_id')->dropDownList($CoursesCat, 
     ['prompt'=>'-Choose a Category-', 
      'onchange'=>' 
      $.post("'.urldecode(Yii::$app->urlManager->createUrl('coursedetail/lists&id=')).'"+$(this).val(), function(data) { 
       $("select#subcat_id").html(data); 
      }); 
     ']); 


echo $form->field($model, 'subcat_id') 
    ->dropDownList( $CoursesSubcat   
     ['prompt'=>'-Choose a Sub Category-'], 
     ['id'=>'subcat_id'] 
    ); ?> 
+0

bitte geben Sie 'CoursesSubcat' Tabellenstruktur – vishuB

+0

diesen Link hilfreich für Sie http://www.yiiframework.com/wiki/723/creating-a-dependent-dropdown-from-scratch-in-yii2/ – jithin

Antwort

1
public function actionLists($id) 
{ 
    echo $sql = "select * from courses_subcat where cat_id='$id' "; 
    $models = CoursesSubcat::findBySql($sql)->asArray()->all(); 
    //echo "<pre>";print_r($model);exit; 

    if(sizeof($models) >0){ 
     echo "<option>-Choose a Sub Category-</option>"; 
     foreach($models as $model){ 
      echo "<option value='".$model['id']."'>".$model['name']."</option>"; 
     } 
    } 
    else{ 
     echo "<option>-Choose a Sub Category-</option><option></option>"; 
    } 

} 
0

verwenden, um die krajee Erweiterung für abhängige Dropdown

Einzelheiten zu erstellen, ist hier Krejee abhängig Drop-Down für yii2 http://demos.krajee.com/widget-details/depdrop

oder folgen folgende Anweisungen:

Installieren Sie die Erweiterung über Composer:

$ php composer.phar require kartik-v/dependent-dropdown "dev-master" 

Ihrer Ansicht:

use kartik\widgets\DepDrop; 

// Normale Eltern wählen

echo $form->field($model, 'cat')->dropDownList($catList, ['id' => 'cat-id']); 

// Dependent Dropdown

echo $form->field($model, 'subcat')->widget(DepDrop::classname(), [ 
    'options' => ['id' => 'subcat-id'], 
    'pluginOptions' => [ 
     'depends' => ['cat-id'], 
     'placeholder' => 'Select...', 
     'url' => Url::to(['/site/subcat']) 
    ] 
]); 

// DER REGLER

public function actionSubcat() { 
$out = []; 
if (isset($_POST['depdrop_parents'])) { 
$parents = $_POST['depdrop_parents']; 
if ($parents != null) { 
$cat_id = $parents[0]; 
$out = self::getSubCatList($cat_id); 
// the getSubCatList function will query the database based on the 
// cat_id and return an array like below: 
// [ 
// ['id'=>'<sub-cat-id-1>', 'name'=>'<sub-cat-name1>'], 
// ['id'=>'<sub-cat_id_2>', 'name'=>'<sub-cat-name2>'] 
// ] 
echo Json::encode(['output'=>$out, 'selected'=>'']); 
return; 
} 
} 
echo Json::encode(['output'=>'', 'selected'=>'']); 
} 
Verwandte Themen