Короче разделил сущности, как сказали. И загружаю в модальное окно всю форму нужного типа недвижимости.
<?php Modal::begin([
'size' => 'modal-md',
'header' => '<h4 class="modal-title">Добавление объявления</h4>',
'toggleButton' => [
'tag' => 'button',
'class' => 'btn btn-primary',
'id' => 'modal-button',
'label' => 'Добавить объявление',
]
]); ?>
<div class="form-horizontal">
<div class="form-group">
<label class="col-lg-4 control-label">Тип недвижимости</label>
<div class="col-lg-7">
<select id="rform" class="form-control">
<option value>Выберите тип недвижимости</option>
<option value="0">Квартира</option>
<option value="1">Дом/Часть дома</option>
</select>
<div class="help-block"></div>
</div>
</div>
</div>
<div class="modal-form"></div>
<?php Modal::end(); ?>
<script>var url = '<?= Url::to(['realty/default/showform']); ?>';</script>
<?php
$script = <<< JS
$(document).ready(function(){
$('#rform').on('change', function() {
var val = $('#rform').val();
$.ajax({
type: 'POST',
url: url,
data: {type:val},
beforeSend: function(){
$('.modal-form').html('<div style="text-align:center; margin:10px"><img src="loading.gif" /></div>');
},
success: function(data){
$('.modal-form').html(data);
}
});
});
});
JS;
$this->registerJs($script, View::POS_END);
?>
Контроллер
public function actionShowform()
{
if (Yii::$app->request->isAjax) {
$type = $_POST['type'];
if ($type == 0) {
return $this->renderAjax('/apartment/_form', [
'model' => new Apartment,
]);
} else if ($type == 1) {
return $this->renderAjax('/house/_form', [
'model' => new House,
]);
}
}
}