Подсветка ошибок для многоуровневых форм

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
rodigy
Сообщения: 2
Зарегистрирован: 2019.08.15, 23:37

Подсветка ошибок для многоуровневых форм

Сообщение rodigy » 2019.10.09, 23:30

Маленькая демонстрация

Модель

Код: Выделить всё

class RegisterFrom extends \yii\base\Model {
	public function rules() {
		return [
			['name', 'required'],
			['social', 'socialValidate'],
		];
	}
	
	public function socialValidate() {
		// ....
	}
}
Форма:

Код: Выделить всё

<?
// RegisterFrom  $model;
?>

<?php $form = \yii\widgets\ActiveForm::begin(); ?>

<?= $form->field($model, 'name'); ?>
<?= $form->field($model, 'social[vk]'); ?>
<?= $form->field($model, 'social[fb]'); ?>

<?php \yii\widgets\ActiveForm::end(); ?>
Как можно сделать раздельно вывод ошибок для каждого поля social, а не глобально для social. Посмотрел сорцы, ничего подобного не нашел, все завязано на первом уровне вложенности, т.е. в addError можно дать атрибут с именем social

yiiliveext
Сообщения: 361
Зарегистрирован: 2019.08.13, 01:49

Re: Подсветка ошибок для многоуровневых форм

Сообщение yiiliveext » 2019.10.10, 08:37

Либо валидируете на клиенте, либо наследуетесь от ActiveField и убираете фильтрацию имени атрибута и выводите поле уже со своим кастомным классом, тогда можно будет добавлять ошибки как-то так

Код: Выделить всё

 if (empty($this->social['vk'])) {
                $this->addError($attribute.'[vk]', "$attribute vk can't be blank");
 }

Ответить