在Symfony2中立即验证多个复选框的正确方法是什么(需要)



假设我们有一个包含3个复选框(a,b,c)的Symfony2表单,我们希望用户至少勾选一个复选框以验证表单,因此任何组合(因此)[a],[b],[c],[a,b],[a,c],[b,c],[a,b,c])将返回true且无选择[]返回false。<<<<<<<<<<<</p>

使用教义对象上的Symfony验证器实现此目的的正确方法是什么?

编辑
每个复选框都使用学说@ORMColumn(type="boolean")

映射到数据库中的列

如果您正确地使用了选项列表的选择字段类型,则可以使用ChoiceValidator

@AssertChoice(min=1, minMessage = "You must choose at least one option.")

来自文档:

如果多个选项为true,则可以使用最小选项强制选择要选择的XX数量的值。例如,如果min是3,但是输入数组仅包含2个有效的项目,则验证将失败。

解决问题。

基于Symfony2类约束验证器文档以及有关将验证subpath设置为升级2.1.md

的更改的添加信息在我的实体课中,我添加了:

class Message
{
  // ...
  // check if user selected at least one network to publish the message
  public function isNetworkSelected(ExecutionContext $context)
  {
    if (!$this->network_twitter && !$this->network_facebook && !$this->network_googleplus)
    {
      $context->addViolationAtSubPath('network_facebook', 'Please select at least one network', array(), null);
    }
  }
  // ...
}

validation.yml中:

MYMessageBundleEntityMessage
    constraints:
        - Callback:
            methods:   [isNetworkSelected]

您有按钮控件吗?如果是这样,在单击事件中,请检查是否进行了选择,如果是这样,请返回true,否则返回false。

相关内容

最新更新