2016-03-20 3 views
1

Ich möchte einen Filter für Benutzer zu suchen erstellen. Ich erstelle diese abhängige Dropdown-Liste, aber es funktioniert nicht. Ich habe "Stadt" - und "Staats" -Tabellen. Es funktioniert nicht. Fehler in consolde POST http://localhost/smarthouse/web/index.php?r=post/lists?id=1 404 (Not Found)Yii2: Abhängige Dropdown-Liste zu suchen

Kann mir jemand sagen, wo ich falsch gelaufen bin? Danke.

Meine Form

<?php 
$dataCity=ArrayHelper::map(\app\models\Cities::find()-> 
asArray()->all(),'id', 'name');  
       $form = ActiveForm::begin(); 
      echo $form->field($searchModel, 'id')->dropDownList($dataCity, 
           [''=>'-Choose a Name-', 
            'class'=>'adjust', 
         'onchange'=>' 
     $.post("index.php?r=post/lists?id='. 
     '"+$(this).val(),function(data) 
       { 
          $("select#post").html(data); 
         }); 
        ']); 

      $dataState=ArrayHelper::map(\app\models\States::find()-> 
      asArray()->all(), 'id', 'name'); 
      echo $form->field($searchModel, 'id') 
       ->dropDownList(
        $dataState, 
        ['id'=>'name', 
         'class'=>'adjust' 
         ] 
       ); 
      ActiveForm::end(); 
      ?> 

Meine Liste Aktion in post-Controller

public function actionLists($id) 
    { 
    $countPosts = States::find() 
    ->where(['city_id' => $id]) 
    ->count(); 

    $posts = States::find() 
    ->where(['city_id' => $id]) 
    ->orderBy('id DESC') 
    ->all(); 

    if($countPosts>0){ 
    foreach($posts as $post){ 

    echo "<option value='".$post->id."'>".$post->name."</option>"; 
    } 
    } 
    else{ 
    echo "<option>-</option>"; 
    } 

Antwort

1

In Ihrem Onchange $ .post Pfad sollte die zweiten GET-Parameter mit & und nicht mit ? auf diese Weise `Index beginnen. php? r = post/lists & id

'onchange'=>' 
    $.post("index.php?r=post/lists&id='. // use & not ? 
    '"+$(this).val(),function(data) 
      { 
         $("select#post").html(data); 
        }); 
       ' 
+0

Vielen Dank:) Es klappt – Starite