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;
このビデオを見てすることをお勧めいたしますが上の細かい動作しますが、プロフィールページは保存されません。 – gugoan
申し訳ありませんコードを表示してください – Dipendra