Как задать значение валидатора по умолчанию?

Здравствуйте!

Есть одна проблема:

Сайт в кодировке UTF-8

при вводе данных формы проверка


array('name', 'length', 'max'=>64)

не правильно работает с русскими буквами

если указать кодировку


array('name', 'length', 'max'=>64, 'encoding'=>'UTF-8')

то работает правильно.

Но указывать в каждой модели для каждого текстового поля кодировку ‘encoding’=>‘UTF-8’ лень.

Здесь предлагают написать свой валидатор, но это по моему не самый лучший вариант.

Есть ли возможность настроить кодировку по умолчанию для валидатора CStringValidator?

Сделайте наследник класса

class CStringValidatorMb extends CStringValidator{

public $encoding='UTF-8';

}

и в правлах используйте его

А как можно изменить псевдоним валидатора, что бы при вызове ‘length’ срабатывал мой валидатор, а не CStringValidator?

смотрите код:


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’] = ‘Имя класса’;

Только мне кажется это какой-то некрасивый хак. И его придется таскать из проекта в проект

Спасибо за совет, запихнул это в config работает,

похоже пока более подходящего варианта нет.