Я использую динамическую форму wbraganca / yii2 для Nested Dynami c Форма exmaple. Я хотел создать номер комнаты, который определен в другом поле number_of_rooms, используя функцию Javascript onchange. Функция Onchange работает хорошо.
Q1: вместо увеличения одного за другим, я хочу создать определенный номер комнаты в поле number_of_rooms.
Я пытался PHP _POST метод.
### form. php
<div class="row">
<div class="col-sm-6">
<?= $form->field($model, 'number_of_rooms')->dropDownList($model->getNumberList(),['id'=>'number_of_rooms']) ?>
</div>
</div>
<tr>
<?php
echo $this->render('_form-person-room', ['form' => $form,'indexRoom' => $modelRoom->isNewRecord ? (strpos($indexRoom, 'new') !== false ? $indexRoom : 'new' . $indexRoom) : $modelRoom->id,'modelsRoom' => $modelsRoom]);
?>
</tr>
### _form-person-room. php
<?php
use yii\helpers\Html;
use frontend\models\Room;
?>
<?php $_display=' style="display:none;" '; ?>
<?php foreach ($modelsRoom as $indexRoom => $modelRoom):?>
<td>
<div class="col-md-4" id="numbers_hidden1" <?php echo $_display ?>>
<?php echo $form->field($modelRoom, 'room[]')->textInput(['id' => 'room001-01', 'maxlength' => true])?>
</div>
<div class="col-md-4" id="numbers_hidden2" <?php echo $_display ?>>
<?php echo $form->field($modelRoom, 'room[]')->textInput(['id' => 'room001-02', 'maxlength' => true])?>
<?php echo $form->field($modelRoom, 'room[]')->textInput(['id' => 'room002-02', 'maxlength' => true])?>
</div>
<td>
<?php endforeach; ?>
### секция контроллера
foreach ($modelsRoom as $indexRoom => $modelRoom {
if ($flag === false) {
break;
}
$modelRoom->house_id = $model->id;
$arrayRoom = $_POST['Room']['room'];
$modelRoom->room = json_encode($arrayRoom);
if (!($flag = $modelRoom->save(false))) {
break;
}
}
###
## javascript функция
$('#number_of_rooms').change(function()
{
var zusId = $(this).val();
if(zusId==0){
document.getElementById('numbers_hidden1').style.display = "none";
document.getElementById('numbers_hidden2').style.display = "none";
}
if(zusId==1){
document.getElementById('numbers_hidden1').style.display = "block";
}
if(zusId==2){
document.getElementById('numbers_hidden2').style.display = "block";
}
});
Q2: Когда пользователь нажимает кнопку + на домах, эту же функцию необходимо использовать повторно. Есть идеи, как заставить его работать?