Краткий справочник по валидации
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Краткий справочник по валидации
Все стандартные правила валидации на одной странице.
http://yiiframework.ru/doc/cookbook/ru/ ... .reference
http://yiiframework.ru/doc/cookbook/ru/ ... .reference
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 350
- Зарегистрирован: 2009.09.17, 16:47
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Краткий справочник по валидации
Подскажите как работает CTypeValidator?
Есть поле birthday в БД типа datetime, пишу в модели array('birthday', 'type', 'dateFormat' => 'MM/dd/yyyy'), но видимо, что-то не так, т.к. проверка не происходит.
Есть поле birthday в БД типа datetime, пишу в модели array('birthday', 'type', 'dateFormat' => 'MM/dd/yyyy'), но видимо, что-то не так, т.к. проверка не происходит.
Предупрежден - значит вооружен.
devKP.ru
devKP.ru
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Краткий справочник по валидации
Берётся строка на входе и валидатор при помощи CDateTimeParser::parse пытается её разобрать:
У вас ошибочка, вы указали 'type' как тип валидатора, а подразумевался, наверное, 'date'.
Код: Выделить всё
$valid=CDateTimeParser::parse($value,$this->dateFormat)!==false;
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 350
- Зарегистрирован: 2009.09.17, 16:47
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Краткий справочник по валидации
Разобрался. Действительно надо было посмотреть код CTypeValidator.
Правильно указывать: array('birthday', 'type', 'type' => 'date'), и возможные варианты integer, float, string, date, time, datetime. Просто из рецепта не совсем понятно было, что указывать.
Правильно указывать: array('birthday', 'type', 'type' => 'date'), и возможные варианты integer, float, string, date, time, datetime. Просто из рецепта не совсем понятно было, что указывать.
Предупрежден - значит вооружен.
devKP.ru
devKP.ru
Re: Краткий справочник по валидации
Доброго времени суток!
Есть форма, в которой имеются поля "основной" модели и "подчиненной" (has_many). При ошибке валидации в полях подчиненной модели, есссно происходит возврат к форме с сообщением об ошибке валидации в подчиненной модели ( Please fix the following input errors: * An error occured during the save of deliveryTypes ). При этом, в подчиненной модели для данных полей у меня установлено собственное, человекопонятное, сообщение.
Подскажите пожалуйста, как сделать чтобы отображалось нужное мне сообщение из подчинненной модели.
Спасибо!
Есть форма, в которой имеются поля "основной" модели и "подчиненной" (has_many). При ошибке валидации в полях подчиненной модели, есссно происходит возврат к форме с сообщением об ошибке валидации в подчиненной модели ( Please fix the following input errors: * An error occured during the save of deliveryTypes ). При этом, в подчиненной модели для данных полей у меня установлено собственное, человекопонятное, сообщение.
Подскажите пожалуйста, как сделать чтобы отображалось нужное мне сообщение из подчинненной модели.
Спасибо!
Re: Краткий справочник по валидации
Всем привет! Проблему решил подключением экстеншена (behavior) CSaveRelationsBehavior и допиливанием его так, чтобы он мог показывать ошибки валидации заданные в реляционных моделях при необходимости (по параметру). Кому интересно - пишите в личку.
P.S. Просьба к модераторам. Перенесите пожалуйста два моих поста из этой темы в "Свои сообщения для ошибок валидации" (viewtopic.php?f=8&t=11). Сначала не соориентировался...
Всем успехов!
P.S. Просьба к модераторам. Перенесите пожалуйста два моих поста из этой темы в "Свои сообщения для ошибок валидации" (viewtopic.php?f=8&t=11). Сначала не соориентировался...
Всем успехов!
Re: Краткий справочник по валидации
Есть предложение добавить в описание CStringValidator параметра encoding, все-таки для нас это особенно актуально, а узнать, что его надо использовать, можно только столкнувшись с ошибкой...
Re: Краткий справочник по валидации
Подскажите, в чем может быть дело - в правилах указываю array('username', 'authenticate','on'=>'login'), функция authenticate вообще не вызывается.
Убираю 'on'=>'login' - работает (но при регистрации соответственно тоже вызывается).
Убираю 'on'=>'login' - работает (но при регистрации соответственно тоже вызывается).
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Краткий справочник по валидации
Не так задан сценарий.
Нравится Yii? Давайте сделаем его лучше!.
Re: Краткий справочник по валидации
Ясно. Странно, что в документации в разделе правил валидации не сказано о setScenario. Так вполне логично подумать что сценарий завязан на текущем экшне.
Re: Краткий справочник по валидации
Думаю, что подраздел под названием "Стандартные параметры", в котором описывается, как определяется каждое правило валидации, нужно разместить до подраздела "Выбор валидаторов". Так логичнее и последовательнее будет: сначала показали, как метод модели rules() возвращает набор правил валидации, затем рассказали о том, как описывается каждое правило валидации, и только потом описываем использование валидаторов и сценариев. Также можно переименовать в что-нибудь вроде: "Описание правила валидации", "Определение правила валидации" и т.п. Так тоже логичнее будет.
Re: Краткий справочник по валидации
Правильно ли я понимаю, что чтобы мне проверить поле "дата" мне надо написать такой сценарий?
и этот же сценарий проверит, пустое ли поле?
Код: Выделить всё
array('client_birthday','date','format'=>'yyyy-mm-dd','allowEmpty'=>true,'message'=>'Выберите дату используя календарь'),
Re: Краткий справочник по валидации
Я вот заметил, что не все поля валидируются на лету, когда стоит
а некоторые вообще не валидируются. К примеру, я использую
у меня есть такая форма
в модели есть правило
так вот client_firstname валидируется а client_id никак нет!
Код: Выделить всё
'enableAjaxValidation'=>true,
Код: Выделить всё
zii.widgets.jui.CJuiAutoComplete
Код: Выделить всё
{assign var="form" value=$this->beginWidget('CActiveForm',[
'id'=>'frm',
'enableClientValidation'=>true,
'enableAjaxValidation'=>true,
'clientOptions'=>[
'validateOnSubmit'=>true]
])}
{assign var="autosaggest" value=$this->widget('zii.widgets.jui.CJuiAutoComplete', $autocompleteConfig)}
{$form->error($model,'client_firstname')}
{$form->textField($model,'client_id',['id'=>'client_id'])}
{$form->error($model,'client_id')}
{CHtml::submitButton('Далее')}
{assign var="endForm" value=$this->endWidget()}
Код: Выделить всё
array('client_firstname', 'required', 'on'=>'suggest','message'=>'Необходимо ввести имя или фамилию существующего клиента'),
array('client_id','required', 'on'=>'suggest','message'=>'Не выбран существующий клиент'),
Re: Краткий справочник по валидации
а почему с правилом проходят валидацию и числа?
Код: Выделить всё
array('title, text', 'type', 'type' => 'string'),
Re: Краткий справочник по валидации
СтранноDima писал(а):а почему с правиломпроходят валидацию и числа?Код: Выделить всё
array('title, text', 'type', 'type' => 'string'),
Код: Выделить всё
$validator = new CTypeValidator();
$validator->type = 'string';
$resultInt = $validator->validateValue(123);
$resultString = $validator->validateValue("123");
var_dump($resultInt, $resultString);
//bool(false) bool(true)
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Краткий справочник по валидации
дата в request запросе не может быть int
Re: Краткий справочник по валидации
Еще не хватает упоминания о except в списке параметров
Большинство неправильных шагов совершаются стоя на месте
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Краткий справочник по валидации
Сюда https://github.com/samdark/yiiframework_ru_cookbook pull request сумеете сочинить?
Нравится Yii? Давайте сделаем его лучше!.
Re: Краткий справочник по валидации
Сочинил
Большинство неправильных шагов совершаются стоя на месте