我有一个带有组合框的表单,当提交时,点值不能重复
表格
->add('points', 'choice', array(
'attr' => array('class' => 'form-control m-b'),
'choices' => array(
'0' => '0',
'1' => '1',
'2' => '2',
'3' => '3',
'4' => '4',
'5' => '5',
'6' => '6',
'7' => '7',
'8' => '8',
'9' => '9',
'10' => '10',
)
))
symfony的版本是2.6
任何帮助将不胜感激
答案 0 :(得分:1)
您需要对此进行自定义验证,然后您可以使用回调创建自定义验证,如下所示。
假设 points 属性为数组
在您的实体类上
如果您使用注释作为验证格式:
class Author
{
private $points;
/**
* @Assert\Callback
*/
public function validate(ExecutionContextInterface $context)
{
if(sizeof(array_unique($this->points)) !== sizeof($this->points)){
$context->buildViolation('Values must be unique')
->atPath('points')
->addViolation();
}
}
}
如果您使用 YAML 作为验证格式,在这种情况下您需要从上面的验证功能中删除:
/**
* @Assert\Callback
*/
...
# src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\Author:
constraints:
- Callback: [validate]
有关回调的详情,请参阅Symfony Callbacks