проблему с ActiveForm который рендерится на странице в цикле во множество экземпляров. Проблемы 2.
1) id не уникальный у полей
2) валидаторы которые завязаны на данных из других полей юзают за основу поля из формы отрендеренной на первой итерации, вместо того чтобы юзать поля со своей формы.
Понимаю, что первое можно просто велосипедом сделать указав всем полям руками уникальные id, но наверняка есть способ решить обе проблемы указав где-то какое-то одно свойство при инициализации)
Вот такая конструкция:
<?php $k = 0;foreach ($employeesModels as $employeeModel) { ++$k;?>
<div class="private-office__desc block__title">
<span><?= $k ?>.</span> <?= $employeeModel->username ?>
</div>
<?php $editEmployeeForm = ActiveForm::begin(['id' => 'employee-' . $k . '-form']); ?>
<?= $editEmployeeForm->field($employeeModel, 'id')->hiddenInput()->label(false); ?>
<div class="private-office__input">
<div class="private-office__input-wrap body__input">
<p>Username</p>
<div class="form-group field-profileform-username required">
<?= $editEmployeeForm->field($employeeModel, 'username')
->textInput(['readonly' => true, 'maxlength' => true, "class" => "form-control custom-input"])
->label(false);
?>
<p class="help-block help-block-error"></p>
</div>
</div>
<div class="private-office__input-wrap body__input">
<p>Hasło</p>
<div class="form-group field-profileform-email required">
<?= $editEmployeeForm->field($employeeModel, 'password')
->passwordInput(['readonly' => true, 'maxlength' => true, 'class' => 'form-control custom-input'])
->label(false);
?>
<p class="help-block help-block-error"></p>
</div>
</div>
<div class="private-office__input-wrap body__input">
<p>Powtórz hasło</p>
<div class="form-group field-profileform-email required">
<?= $editEmployeeForm->field($employeeModel, 'password_repeat')
->passwordInput(['readonly' => true, 'maxlength' => true, 'class' => 'form-control custom-input'])
->label(false);
?>
<p class="help-block help-block-error"></p>
</div>
</div>
</div>
<div class="block__btns">
<div class="simple-btn2 btn block__btn concealer__hide">
<?= Html::submitButton('Zapisz') ?>
</div>
</div>
<?php ActiveForm::end(); ?>
<?php } ?>
pastebin
действительно)
спасибо, подправил
Обсуждают сегодня