Symfony 2 Validator - 如何返回数组

时间:2013-07-07 17:40:47

标签: php json validation symfony

我需要Symfony2 Validator来返回一个数组而不是一个对象。

这样的事情:

$insert = new MyEntity();
$insert->setTest1( 'testtesttest' );
$validator = $this->get('validator');
$errors = $validator->validate($insert);

...将启用此功能:

$errors[0]['message'] = "The email is not valid"

只是一个简单的数组,因为解析返回的对象非常困难。

我理解验证器配置,但我只需要验证器返回一个数组而不是它的常用对象。

我是JSON编码结果和(a)json_encode与对象斗争+(b)我不想只返回整个对象的错误列表。

我没有使用内置表单,只使用原始验证器。

2 个答案:

答案 0 :(得分:3)

您可以遍历对象以创建错误数组。

$errors = $this->get('validator')->validate( $insert );

$errorArray = array();

foreach($errors as $error)
{
    $errorArray[$error->getPropertyPath()] = $error->getMessage();
}

答案 1 :(得分:1)

Validator->validate()返回ConstraintViolationListInterface的对象,该对象实现IteratorAggregate接口。简单的foreach,并从ConstraintViolationInterface对象构建您想要的数组。