gashek
(Gashek88)
1
Здравствуйте!
Есть одна проблема:
Сайт в кодировке UTF-8
при вводе данных формы проверка
array('name', 'length', 'max'=>64)
не правильно работает с русскими буквами
если указать кодировку
array('name', 'length', 'max'=>64, 'encoding'=>'UTF-8')
то работает правильно.
Но указывать в каждой модели для каждого текстового поля кодировку ‘encoding’=>‘UTF-8’ лень.
Здесь предлагают написать свой валидатор, но это по моему не самый лучший вариант.
Есть ли возможность настроить кодировку по умолчанию для валидатора CStringValidator?
rudenich
(Rudenich)
2
Сделайте наследник класса
class CStringValidatorMb extends CStringValidator{
public $encoding='UTF-8';
}
и в правлах используйте его
gashek
(Gashek88)
3
А как можно изменить псевдоним валидатора, что бы при вызове ‘length’ срабатывал мой валидатор, а не CStringValidator?
Albert
(Testphptest)
4
смотрите код:
abstract class CValidator extends CComponent
{
/**
* @var array list of built-in validators (name=>class)
*/
public static $builtInValidators=array(
'required'=>'CRequiredValidator',
'filter'=>'CFilterValidator',
'match'=>'CRegularExpressionValidator',
'email'=>'CEmailValidator',
'url'=>'CUrlValidator',
'unique'=>'CUniqueValidator',
'compare'=>'CCompareValidator',
'length'=>'CStringValidator',
'in'=>'CRangeValidator',
'numerical'=>'CNumberValidator',
'captcha'=>'CCaptchaValidator',
'type'=>'CTypeValidator',
'file'=>'CFileValidator',
'default'=>'CDefaultValueValidator',
'exist'=>'CExistValidator',
'boolean'=>'CBooleanValidator',
'safe'=>'CSafeValidator',
'unsafe'=>'CUnsafeValidator',
);
вам нужно сделать так:
CValidator::$builtInValidators[‘length’] = ‘Имя класса’;
Только мне кажется это какой-то некрасивый хак. И его придется таскать из проекта в проект
gashek
(Gashek88)
5
Спасибо за совет, запихнул это в config работает,
похоже пока более подходящего варианта нет.