La classe suivante permet de valider, dans symfony, une liste d’emails, entrée par l’utilisateur dans un champs de type textarea. Elle s’appuie sur le travail de la classe sfValidatorEmail.

class sfValidatorEmails extends sfValidatorBase
{

  public function __construct($options = array(), $messages = array()) 
  {
    parent::__construct(array_merge($options, array('trim' => true)), $messages);
  }

  public function doClean($value) 
  {
    $i = 0;
    $emails = explode("
", $value);
    $validator = new sfValidatorEmail($this->options, $this->messages);
    
    $cleaned_emails = array();

    try {
      foreach ($emails as $email) {
        ++$i;
        $cleaned_emails[] = $validator->clean($email);
      }
    } catch (Exception $e) {
        throw new sfValidatorError($this, 'invalid',
                                   array('line' => $i, 'bad_email' => $email));
    }
    return implode("
",$cleaned_emails);
  }

}