2017-05-28 54 views
1

我想验证后,我的订阅实体,以得到一个干净的错误消息后:
如何获得错误信息实体验证

/** 
* 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; 

调用验证服务后,并与空白邮件测试:

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

我收到了此消息Object(AppBundle\Entity\Subscribe).email: This value must not be empty. (code c1051bb4-d103-4f74-8988-acbcafc7fdc3)。 任何想法如何清洁它?

回答

2

试试这个:

  $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)); 
      } 

这样我已创建错误的数组,其中的关键是无效的领域,你可以改变这种逻辑和前面添加字段的唯一名称该错误并返回一个简单的字符串。

该代码可以在形式

+0

好兄弟为我工作的各个领域的工作,非常感谢你:) – ahmedbhs

+0

很高兴为您服务! :d –