2017-03-23 15 views
0

私はYoutubeチュートリアルに従って従属DropdownList(State and City)を作成し、ロード直後にDropdownlist Cityはすべての都市を表示します。Yii2依存DropdownList州と都道府県

状態を選択するときだけ表示されないことを希望します。しかし、私はそれを行う方法がわからないし、いくつかの助けを望んでいます。私がやった方法

ルック:

VIEW:_search.php

<?php $form = ActiveForm::begin([ 
    'action' => ['index'], 
    'method' => 'get', 
]); ?> 

<?= $form->field($model,'state_id')->dropDownList(
       ArrayHelper::map(State::find()->all(), 'id', 'nome'), 
       [ 
        'prompt'=>'Selecione', 
        'onchange'=>' 
        $.get("'.Url::toRoute('/city/lists').'", { id: $(this).val() }) 
         .done(function(data) { 
          $("#'.Html::getInputId($model, 'city_id').'").html(data); 
         } 
        );'  
       ]); 
?> 

<?= $form->field($model,'city_id')->dropDownList(
       ArrayHelper::map(City::find()->all(), 'id', 'name'), 
       [ 
        'prompt'=>'Selecione o estado', 
       ]); 
?> 

CONTROLLER:CityController.php

public function actionLists($id) 
{ 
    $countCity = City::find() 
      ->where(['state_id' => $id]) 
      ->count(); 

    $cities = City::find() 
      ->where(['state_id' => $id]) 
      ->all(); 

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

} 

SQL:

CREATE TABLE `city` (
    `id` int(11) NOT NULL, 
    `name` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `state_id` int(11) DEFAULT NULL, 
    `population_2010` int(11) DEFAULT NULL, 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

-- -------------------------------------------------------- 

CREATE TABLE `state` (
    `id` int(11) NOT NULL, 
    `name` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `sigla` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

答えて

1

上でこのコードを追加変更()

$.get("'.Url::toRoute('/city/lists').'", { id: $(this).val() }) 
        .done(function(data) { 
         $("select#selectid").html(data); 
        } 
       );' 




       <select id="selectid"></select> 

、あなたが

actionList($id){ 
           $list=Model::findBySql('your quer where id=$id')->all() 
      foreach($list as $l){ echo "<option value='" $l->id."'>'.$l->name.'</option>'; 
       } 

からオプション値を返すために持っている私は、検索ページに、こんにちは

https://m.youtube.com/watch?v=bpj7dF2orbI

+0

このビデオを見てすることをお勧めいたしますが上の細かい動作しますが、プロフィールページは保存されません。 – gugoan

+0

申し訳ありませんコードを表示してください – Dipendra

関連する問題