Как включить выключить проверку формы интерфейса для некоторых полей в yii2?
У меня сложная форма в представлении yii2, где некоторые поля показывают или скрывают. Он решает от выбора поля пользователя, выберите Параметры в форме. Я пишу эту логику интерфейса с помощью пользовательского файла jquery. Все в порядке. Но когда я отправляю форму-скрытые поля остаются без проверки, и ничего не происходит.Как я могу убить проверку ofrontend, когда поля hiiden и включить его, когда поля видны?
5 ответов
отключить проверку на стороне клиента. Начните свою активную форму вот так.
ActiveForm::begin(['enableClientValidation'=>false]);
$form->field($model, 'youAttribute', ['enableClientValidation' => false])->textInput();
на ActiveField
класс имеет свойство enableClientValidation
, вы можете просто установить это свойство в false
Если вы хотите отключить clientValidation формируют некоторые поля.
вы можете установить активное поле, используя этот код: (не active record
, activefield
точно)
$activeField = $form->field($model, 'someField');
$activeField->enableClientValidation=false;
$activeField ->enableAjaxValidation=false;
вы можете попробовать установить значения по умолчанию для атрибутов, которые не заданы:
[
// set "username" and "email" as null if they are empty
[['username', 'email'], 'default'],
// set "level" to be 1 if it is empty
['level', 'default', 'value' => 1],
]
вы также можете использовать условное проверка на стороне клиента С "whenClient"
опция при определении валидаторов:
из руководства:
Если вам нужна поддержка условной проверки на стороне клиента, вы следует настроить whenClient свойство, которое принимает строку представление JavaScript функция, возвращаемое значение которой определяет применять правило или нет. Например,
[ ['state', 'required', 'when' => function ($model) { return $model->country == 'USA'; }, 'whenClient' => "function (attribute, value) { return $('#country').val() == 'USA'; }"], ]
удалить поле из проверки:
$('#yourFormID').yiiActiveForm('remove', 'yourinputID');
чтобы добавить поле в список проверки:
$('#yourFormID').yiiActiveForm('add', {
id: 'country',
name: 'yourinputID',
container: '.field-inputID', //or your cllass container
input: '#yourinputID',
error: '.help-block', //or your class error
validate: function (attribute, value, messages, deferred, $form) {
yii.validation.required(value, messages, {message: "Validation Message Here"});
}
});
и не забывайте об условной проверке в вашей модели. Подробнее