Здравствуйте.
--
Ситуация: Нужно чтобы результат валидации происходил в определённом месте в верстке.
Нарвался на код, который выводит якобы все ошибки конкретной формы:
<?php $form = ActiveForm::begin([ 'options' => ['class' => 'form']]); ?>
<?=$form->errorSummary($model);?>
<?php ActiveForm::end(); ?>
Но выводится:<div class="error-summary" style="display: block;">
<p>Исправьте следующие ошибки:</p>
<ul></ul>
</div>
В итоге я подумал, и решил обмануть систему вот так:
...
<?= $form->field($model, 'image', ['template' => '{input}'])->fileInput(['class' => 'upload'])->label(false);?>
...
<?= $form->field($model, 'image', ['template' => '<div class="block">{error}</div>'])->label(false);?>
...
В итоге, в месте ошибки вылезает html- код:
<div class="form-group field-post-image">
<div class="block">
<div class="help-block"></div>
</div>
</div>
Что хорошо, так как нет двух инпутов, а только вёрстка для ошибок. Я не знаю, правильно ли так делать, может в Yii2 есть более простой способ, который придумали до того как костыли и велосипеды захватили код Земли.
ВОПРОС: Есть ли какой-то более менее правильный, безопасный, чистый код, решение, которое выведет текст валидации где я хочу, а не под инпутом по дефолту?
P.S. Чтобы было понятнее, валидация и текст нужен только для кнопки file, остальные параметры проверять не нужно они проходят через контроллер, так как мне нужно скрыть hiddenInput() от злых глаз злоумышленников. В общем вёрстка такая, что нужно выводит в специально отведённом месте. Проверяются только прикреплённые файлы.