Я пытаюсь использовать вложенные динамические формы, используя это виджет yii2 и после этого руководство но всякий раз, когда я пытаюсь поместить вторую динамическую форму, вложенную в первую форму, я получаю сообщение об ошибке
TypeError
Argument 1 passed to DOMDocument::importNode() must be an instance of DOMNode, null given
Если я удалю <?php DynamicFormWidget::begin([...]):?>
а также <?php DynamicFormWidget::end()?>
страница загружается (без функциональности второй динамической формы).
Я здесь раздел моего взгляда, который имеет дело с вложенными динамическими формами
<?php
$form = ActiveForm::begin(['id'=> 'dynamic-form']);
?>
<?php DynamicFormWidget::begin([
'widgetContainer' => 'dynamicform_wrapper',
'widgetBody' => '.container-room-items',
'widgetItem' => '.room-item',
'limit' => 10,
'min' => 1,
'insertButton' => '.add-room',
'deleteButton' => '.remove-room',
'model' => $rooms[0],
'formId' => 'dynamic-form',
'formFields' => [
'name',
'description',
'price',
'room_capacity',
'area'
],
]); ?>
<table>
...
<td>
<?php foreach ($rooms as $indexRoom => $room): ?>
...
<?php DynamicFormWidget::begin([
'widgetContainer' => 'dynamicform_inner',
'widgetBody' => '.container-bed-items',
'widgetItem' => '.bed-item',
'limit' => 4,
'min' => 1,
'insertButton' => '.add-bed',
'deleteButton' => '.remove-bed',
'model' => $room_beds[$indexRoom][0],
'formId' => 'dynamic-form',
'formFields' => [
'bed_type_id',
'capacity'
],
]); ?>
<table>...</table>
<?php DynamicFormWidget::end(); //closing inner widget... errors happens on this line?>
<?php endforeach; ?>
</td>
</table>
<?php DynamicFormWidget::end(); ?>
</div>
Не уверен, что не хватает. Буду очень признателен за любую помощь с этим, спасибо.
Вам не хватает HTML-тегов с классами, настроенными в виджете. Что-то вроде этого:
<div class="container-room-items">
<div class="room-item">
<table>
...
</div>
</div>
Также вам нужны кнопки для вставки / удаления с настроенными классами.
Других решений пока нет …