2017-02-09 122 views
0

如何验证实体变量,因为在我的观点它是有效的空选择。symfony断言实体类型变量

/** 
* @Assert\NotBlank(message = "education level cannot be empty") 
* @var EducationLevel[]|ArrayCollection 
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\EducationLevel") 
*/ 
private $educationLevel; 

表单类型

->add('educationLevel', EntityType::class, [ 
      'class' => 'AppBundle:EducationLevel', 
      'multiple' => true, 
      'choice_label' => function ($educationLevel) { 
       return $educationLevel->getName(); 
      }, 
     ]) 

回答

0

您可以创建在实体验证方法,该方法可以验证$ educationLevel为空或EducationLevel实例的集合。

/** 
* @Assert\IsTrue(message="Education level has to be blank or...") 
*/ 
public function isEducationLevelValid() 
{ 
    if ($this->educationLevel->isEmpty()) { 
     foreach ($this->educationLevel as $edulevel) { 
      if (!$edulevel instanceof EducationLevel) { 
       return false; 
      } 
     } 
     return true; 
    } else { 
     return false; 
    } 
} 

该方法在实体绑定表单提交时自动使用,当然您可以将其用作普通实体的方法。

+0

谢谢,这是断言的工作,但它始终工作,当教育lvl空和比不空:) –

+0

我必须这行* @Assert \ IsTrue(消息=“教育水平必须是空白”)添加我的功能附近谁检查或有效和接近可变的educationLevel? –

+0

我解决了这个问题需要检查arrayCollection中的方法isEmpty() –

1

NotBlank将无法正常工作,因为它会检查是否值不为空或不为空字符串或不存在虚假 NotBlank manual

你所要做的就是编写自定义的约束和验证:

Custom validator manual