Собственно столкнулся с траблом, при использовании бутстрапа 4 версии и валидации форм. Невозможно изменить контейнер для применения класса ошибки. Расширение для бутстрапа не рассматриваю, т.к. используется кастом.
Есть идеи как заложить в js возможность смены контейнера?
P.S.: Пока приходит на ум вариант с указанием контейнера и его выбора через switch.
Контейнер для клиентской валидации
- BrusSENS
- Сообщения: 565
- Зарегистрирован: 2012.07.26, 06:51
- Откуда: Новороссийск
- Контактная информация:
Контейнер для клиентской валидации
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
Режим обслуживания сайта для Yii 2.x.x
- BrusSENS
- Сообщения: 565
- Зарегистрирован: 2012.07.26, 06:51
- Откуда: Новороссийск
- Контактная информация:
Re: Контейнер для клиентской валидации
Прикинул примерный вариант решения проблемы
ActiveForm.php
yii.activeForm.js
Использование ActiveForm
ActiveForm.php
Код: Выделить всё
class ActiveForm
{
const VALIDATING_CSS_SELECTOR_INPUT = 'input';
const VALIDATING_CSS_SELECTOR_CONTAINER = 'container';
public $validatingCssSelector;
protected function getClientOptions()
{
$options = [
...
'validatingCssSelector' => $this->validatingCssSelector,
...
];
return array_diff_assoc($options, [
...
'validatingCssSelector' => self::VALIDATING_CSS_SELECTOR_CONTAINER,
...
]);
}
}
Код: Выделить всё
...
var defaults = {
...
validatingCssSelector: 'container',
...
};
...
var updateInput = function ($form, attribute, messages) {
...
var validatingSelector = undefined;
switch(data.settings.validatingCssSelector) {
case 'container':
validatingSelector = $container;
break;
case 'input':
validatingSelector = $input;
break;
default:
validatingSelector = $container;
break;
}
if (hasError) {
...
validatingSelector.removeClass(data.settings.validatingCssClass + ' ' + data.settings.successCssClass)
.addClass(data.settings.errorCssClass);
} else {
...
validatingSelector.removeClass(data.settings.validatingCssClass + ' ' + data.settings.errorCssClass + ' ')
.addClass(data.settings.successCssClass);
}
...
};
...
Код: Выделить всё
$form = ActiveForm::begin([
...
'validatingCssSelector' => ActiveForm::VALIDATING_CSS_SELECTOR_INPUT,
...
]);
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
Режим обслуживания сайта для Yii 2.x.x