PHP Symfony, exemple d’utilisation de widget et validateur

Voici des exemples d’utilisation des widgets et des validateurs symfony, liste mise a jour au fur et a mesure de mes besoins ^^

Widgets

sfWidgetFormDoctrineChoice

$this->widgetSchema['cat_id'] = new sfWidgetFormDoctrineChoice(array('label' => 'Category',
                                                                      'model' => 'hosts_categories',
                                                                      'add_empty' => true));

sfWidgetFormInputPassword

$this->widgetSchema['password'] = new sfWidgetFormInputPassword();

Validateurs

sfValidatorRegex

$this->validatorSchema['intervalle'] = new sfValidatorRegex(array('pattern' => '/^[0-9]{1}[i,m,d]{1}$/'));

sfValidatorOr

$this->validatorSchema['intervalle'] = new sfValidatorOr(array(new sfValidatorRegex(array('pattern' => '/^[0-9]{1}[i,m,d]{1}$/')),
                                                                new sfValidatorRegex(array('pattern' => '/^[0-9]{1}[i,m,d]{1};[0-9]{2}h[0-9]{2}$/'))));

sfValidatorAnd

$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(new sfValidatorSchemaCompare('repassword',  sfValidatorSchemaCompare::EQUAL, 'password'),
                                                                  new sfValidatorDoctrineUnique(array('model' => 'sfGuardUser',
                                                                                                      'column' => 'username'), array('invalid' => 'This username already taken.')),
                                                                  new sfValidatorDoctrineUnique(array('model' => 'sfGuardUser',
                                                                                                      'column' => 'email_address'), array('invalid' => 'This email address already taken.'))
                                                                  )));

sfValidatorSchemaCompare

$this->validatorSchema['password'] = new sfValidatorString(array('min_length' => 5, 'max_length' => 15));
$this->validatorSchema['repassword'] = new sfValidatorString(array('required' => true));
$this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare('repassword',  sfValidatorSchemaCompare::EQUAL, 'password'));