Symfony2 - 我应该如何在我的非主义对象上实现验证?

时间:2013-04-26 11:11:01

标签: php symfony symfony-forms

Doctrine实体在其成员字段上指定了独立于表单的验证元数据。 Symfony2的表单系统以某种方式使用实体提供的验证器。

这是如何运作的?是什么将它们联系在一起?

我有一个非教义模型,我想验证没有表单,但是当我使用表单时,他们应该使用该验证信息并正确显示它。所以我需要:

  • 非主题对象
  • 上定义验证器
  • 定义验证器,无需注释
  • 允许模型验证自己没有表单
  • 允许表单在非doctrine对象上使用验证器

1 个答案:

答案 0 :(得分:1)

不确定它是否处理您的情况(因为没有提供非doctrine实体的代码),但您可以对值和值数组使用symfony验证约束:

Validation

作为验证数组中几个日期值的示例:

private function isInvalid($data)
{
    $response = array();
    $constraint = new Collection(array(
                'from'=>new Date(),
                'to'=>new Date(),
            ));

    $validationList = $this->get('validator')->validateValue($data, $constraint);

    if(count($validationList)>0) {
        foreach($validationList as $err) { 
            array_push($data,array(
                'field'=>$err->getPropertyPath(),
                'message'=>$err->getMessage(),
            ));
        }
        return $response;
    }
    return false;
}