1) новый проект валидатора (мы будем использовать его как значение фильтра здесь):
/lib/validator/MyProjectStringLowerCase.class.php
<?php
class MyProjectStringLowerCase extends sfValidatorBase
{
/**
* @see sfValidatorBase
*/
protected function doClean($value)
{
return strtolower($value);
}
}
2) связал его с полем:
$this->setWidget('my_field_name', new sfWidgetFormInputText());
$this->validatorSchema['my_field_name'] = new MyProjectStringLowerCase();
Если у вас есть валидатор на этом поле уже, вы можете объединить их в сочетании валидаторов таким образом:
$this->validatorSchema['my_field_name'] = new sfValidatorAnd(array(
$this->validatorSchema['my_field_name'], // the original field validator
new MyProjectStringLowerCase(),
));
Объединенные валидаторы заказа втекающих как значение будет течь корыто их, так что если вы хотите иметь значение фильтруется во второй валидации, установите MyProjectStringLowerCase как первый.
Существуют 2 различия между этим подходом и использованием последующей обработки (например, doSave(), например):
- значение здесь будет фильтроваться после каждой отправки (и покажет фильтруют при отображении ошибок формы)
- Вы можете использовать его очень чисто и легко в других областях или формах в вашего проекта
если это значение всегда будет храниться в нижнем, OP может также положить в его 'Employee.class. php' class: 'public function setName ($ name) $ this -> _ set ("name", $ name); ' – Flukey
Да. Флюки прав. если вы всегда собираетесь их хранить таким образом, вам намного лучше переопределить метод сеттера. – richrosa