I want to create a custom form validator to check if my user is sending a youtube url.
I've already created my lib/validator/youtubeValidator.class.php
Then I use it in my MyForm.class.php : new YoutubeValidator(........)
Here is the code :
class YoutubeValidator extends sfValidatorUrl
{
  protected function configure($options = array(), $messages = array())
  {
    $this->addMessage('invalid', 'Veuillez entrer un lien Youtube');
  }
  protected function doClean($url)
  {
    $pattern = 
      '%^# Match any youtube URL
      (?:https?://)?  # Optional scheme. Either http or https
      (?:www\.)?      # Optional www subdomain
      (?:             # Group host alternatives
        youtu\.be/    # Either youtu.be,
      | youtube\.com  # or youtube.com
        (?:           # Group path alternatives
          /embed/     # Either /embed/
        | /v/         # or /v/
        | /watch\?v=  # or /watch\?v=
        )             # End path alternatives.
      )               # End host alternatives.
      ([\w-]{10,12})  # Allow 10-12 for 11 char youtube id.
      $%x'
      ;
    $result = preg_match($pattern, $url, $matches);
    if (false !== $result)
    {
      return $matches[1];
    }
    return false;
    if (false !== $result)
    {
      throw new sfValidatorError($this, 'invalid', array('value' => $value));
    }
    else
    {
      return true;
    }
  }
}
But it does not work at all.
Moreover, it could be great if my validator could check if youtube video does exist.