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'));