<?php $form = ActiveForm::begin(['options' => ['class' => 'col_16 user_card_wrapper']]);?>
<?= $form->field($model, 'car_mark')->dropDownList(
ArrayHelper::map(MarkCar::find()->all(), 'id', 'mark'),
[
'prompt' => 'Select',
'onchange' => '
$.post( "/ajax/Ajax?id='.'"+$(this).val(), function(data){
$("#searchform-car_model").html(data);
} );
'
]);
?>
<?= $form->field($model, 'car_model')->dropDownList(
['prompt' => 'Select',]);
?>
<?php ActiveForm::end();?>
public function actionAjax($id){
echo 'asdasdasdas';
$count_model = ModelCar::find()
->where(['id_mark' => $id])
->count();
$car_model = ModelCar::find()
->where(['id_mark' => $id])
->all();
echo "<option value = ''>Select</option>";
if($count_model > 0){
foreach ($car_model as $key){
echo "<option value='".$key->id."'>".$key->model."</option>";
}
}
else{
echo "<option></option>";
}
}
$( "#searchform-car_model" ).load("' . Yii::$app->urlManager->createUrl('/ajax/ajax?id=').'"+$(this).val());
Самое интересное что возвращает мне полную копию страницы
public function actionAjax($id){
return $this->renderAjax('_some_view',[
'model' => ModelCar::find()
->where(['id_mark' => $id])->all();
]);
}
$models->count();
юзал count($models);
Зачем 2 запроса делать? А в Вашем случае можно даже if(isset($models[0])){
не замерял, но теоретически быстрее должно работать. Хотя можно еще if(is_array($models)){
и если не изменяет память то можно даже так if($models){