День добрый.
Возник такой вопрос - можно ли используя голый ActiveForm без каких-либо моделей (в т.ч и моделей форм), прикрепить к ней произвольный валидатор, например Required.
Или даже не к форме, а к отдельному инпуту. Нужна именно clientValidation.
Начал копать в сторону свойства Attributes, но что-то не до конца ясно, как сюда засунуть валидатор.
Нашел метод валидатора ClientValidateAttribute, который по идее и делает правило для клиентской валидации, но что-то дальше не вышло.
На сайте много разных инпутов, почти все нужно валидировать по разному. Большая часть даже не в формах, а служит просто для отдачи данных JSу. Писать кучу моделей форм не слишком хочется.
Валидация формы без модели.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Валидация формы без модели.
ActiveForm не работает без моделей.
Нравится Yii? Давайте сделаем его лучше!.
- Dementorpasha
- Сообщения: 39
- Зарегистрирован: 2013.06.08, 07:33
Re: Валидация формы без модели.
А почему бы тогда не воспользоваться DynamicModel ?
Код: Выделить всё
use yii\base\DynamicModel;
public function actionSearch($name, $email)
{
$model = DynamicModel::validateData(compact('name', 'email'), [
[['name', 'email'], 'string', 'max' => 128]],
['email', 'email'],
]);
if ($model->hasErrors()) {
// validation fails
} else {
// validation succeeds
}
}
Re: Валидация формы без модели.
Интересная штука, спасибо.
Правильно ли я понимаю что при её создании нужно обязательно задавать значение параметра?
В таком виде при сабмите форма обнуляется, что логично. Можно ли этого избежать, кроме как тупо вытащить из запроса параметры и присвоить свежесозданной модели?
Правильно ли я понимаю что при её создании нужно обязательно задавать значение параметра?
Код: Выделить всё
$model = new DynamicModel(['email' => NULL]);
$model->addRule( [ 'name' , 'email' ] , 'integer' , [ 'max' => 128 ] )
$form = ActiveForm::begin() ?>
$form->field( $model , 'email' )->textInput()