Архивы автора: xoma

MojoX::Validator первое знакомство

На CPAN есть вот такой замечательный модуль для валидации данных (!) MojoX::Validate . Как видно из названия модуль предназначен для использования в фреймворке Mojolicious. Однако и отдельно от него он прекрасно работает, хотя и тащит за собой Mojo =(.

Пример использования:

use MojoX::Validator;

#создаем новый объект
my $validator = MojoX::Validator->new;        
#массовое добавдение полей для проверки
$validator->field([qw/ID USER_ID/])->each(sub{
   shift->required(1)->regexp(qr/^\d+$/)
});
#правило для одного поля 
$validator->field('NAME')->length(1,20);
#валидируем
$validator->validate({NAME => $name});
#получаем ошибки
$validator->errors;

Маленькая особенность.

Если в конструкции:

$validator->field([qw/ID USER_ID/])->each(sub{
shift->required(1)->regexp(qr/^\d+$/)
});

указать только одно поле (в списке полей) — работать не будет!

Для одного поля используйте запись вида:

$validator->field('NAME')->length(1,20);

Валидируем UTF-ые строки в Yii

Начиная с версии 1.1.1 CStringValidator может принимать параметр «encoding». Выдержка из API:

the encoding of the string value to be validated (e.g. ‘UTF-8’). Setting this property requires you to enable mbstring PHP extension. The value of this property will be used as the 2nd parameter of the mb_strlen() function. Defaults to false, which means the strlen() function will be used for calculating the length of the string.

Используйте его при валидации текстовых строк на русском языке.

Пример (часть метода rules модели):

array(‘question, answer’, ‘length’, ‘max’=>255,’encoding’ => ‘utf-8’),

И не забудьте прочитать статью о том, как включить поддержку Юникод в Yii

Оператор повторения строк в Perl

Оператор повторения строк в Perl — x.

Пример:

$str = ‘xoma’;
say $str x 3; #xomaxomaxoma

Пробел между переменной-строкой и знаком «x» обязателен.
Иначе возникнет неоднозначность и программа работать не будет.