2017-05-28 1 views
1

J'essaie d'obtenir un message d'erreur propre après avoir validé mon abonner entité:
Comment obtenir un message d'erreur après validation de l'entité

/** 
* Subscribe 
* @UniqueEntity("email") 
* @ORM\Table(name="subscribe") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\SubscribeRepository") 
*/ 
class Subscribe 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * @Assert\NotBlank() 
    * @Assert\Email() 
    * @ORM\Column(name="email", type="string", length=255, nullable=true, unique=true) 
    */ 
    private $email; 

Après avoir appelé le service validateur et le tester avec email vide:

$validator = $this->get('validator'); 
    $errors = $validator->validate($email); 
    if (count($errors) >0) { 
    return new JsonResponse((string)$errors); 
     } 

J'ai reçu ce message Object(AppBundle\Entity\Subscribe).email: This value must not be empty. (code c1051bb4-d103-4f74-8988-acbcafc7fdc3). Une idée de comment le nettoyer?

Répondre

2

essayez ceci:

  $validator = $this->get('validator'); 
      $errors = $validator->validate($email); 
      if (count($errors) >0) { 
       $messages = []; 
       foreach ($errors as $violation) { 
        $messages[$violation->getPropertyPath()][] = $violation->getMessage(); 
       } 
       return new JsonResponse(json_encode($messages)); 
      } 

De cette façon je créer un tableau d'erreurs, où la clé est le champ non valide, vous pouvez modifier cette logique et ajouter que le nom du champ devant l'erreur et retourne une chaîne simple.

Ce code peut fonctionne avec tous les champs du formulaire

+0

bon bro a fonctionné pour moi, merci beaucoup :) – ahmedbhs

+0

Je suis heureux de vous aider! :RÉ –