[Validation] problème avec le validator personnalisé
Bonjour
Je rencontre un petit problème avec les validateurs personnalisés.
J'ai un champs qui doit recevoir une url où la valeur "CD".
Pour valider ce champs je crée un validateur personnalisé que j'appelle MyUrl: <lien url="http://symfony.com/doc/current/cookbook/validation/custom_constraint.html">http://symfony.com/doc/current/cookbook/validation/custom_constraint.html</lien>
Voici mon code
MyUrl.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <?php
namespace Dosicalu\PedagicielBundle\Constraint;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class MyUrl extends Constraint
{
public $message = 'Cette url n\'est pas valide';
} |
Et le validator MyUrlValidator.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?php
namespace Dosicalu\PedagicielBundle\Constraint;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class MyUrlValidator extends ConstraintValidator
{
public function isValid($value, Constraint $constraint)
{
$pattern = '#^((https?|ftp)://.*|CD)#';
var_dump($constraint);
var_dump($value);
if (!preg_match($pattern, $value)) {
$this->setMessage($constraint->message);
return false;
}
return true;
}
} |
J'obtient systèmatiquement le message "Cette url n'est pas valide" lorsque je soumet le formulaire
J'insère des var_dump pour voir ce qu'il en est. Voic la trace :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| object(Dosicalu\PedagicielBundle\Constraint\MyUrl)[45]
public 'message' => string 'Cette url n'est pas valide' (length=26)
public 'groups' =>
array
0 => string 'Default' (length=7)
1 => string 'Logiciel' (length=8)
string 'cd' (length=2)
object(Dosicalu\PedagicielBundle\Constraint\MyUrl)[45]
public 'message' => string 'Cette url n'est pas valide' (length=26)
public 'groups' =>
array
0 => string 'Default' (length=7)
1 => string 'Logiciel' (length=8)
string 'http://toto.fr' (length=14) |
Quelques petites précision : mon champ url est lié à l'Entité Logiciel, et 'cd' est une valeur non valide qui était présente dans la base avant que je mette en place le validateur. <lien>http://toto.fr</lien> est la valeur que j'ai renseigné dans le champs.
De plus je n'utilise pas dans mon code les validation_groups.
Comment ce fait-il que j'ai 2 groupes dont un avec le nom de l'entité ?
Est-ce quelqu'un voit d'où peut venir le problème parce que là... je sèche.