0

オブジェクトではなく配列を返すには、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) オブジェクト全体をエラーのリストだけで返したくありません。

組み込みのフォームは使用していません。生の Validator のみを使用しています。

4

2 に答える 2

4

オブジェクトをループして、エラーの配列を作成できます。

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

$errorArray = array();

foreach($errors as $error)
{
    $errorArray[$error->getPropertyPath()] = $error->getMessage();
}
于 2013-07-07T21:37:41.407 に答える
1

Validator->validate()ConstraintViolationListInterfaceインターフェースを実装するのオブジェクトを返しIteratorAggregateます。その上で単純な foreach を実行し、ConstraintViolationInterfaceオブジェクトから目的の配列を構築します。

于 2013-07-07T19:18:37.917 に答える