2013-03-18 9 views
10

エンティティのすべての検証制約を取得する方法(私が達成しようとしているのは、このデータをJSONで返し、クライアント側でJQuery検証プラグインを使用して同じ制約を適用することです)しかし、いくつかのトラブル制約を取得したイムは、ここ は私の現在のコードです:属性symfony2がエンティティの検証制約を取得

$metadata = new \Symfony\Component\Validator\Mapping\ClassMetadata("Namespace\JobBundle\Entity\Job"); 
    $annotationloader = new AnnotationLoader(new AnnotationReader()); 
    $annotationloader->loadClassMetadata($metadata); 

私は$メタデータで取得することは、残りの部分($プロパティと$のメンバーにのみ制約のために空の配列を持っていますエラーメッセージ...実際の制約はありません(例:必須、整数...)。

何が間違っているのですか?

+0

'$ metadata = $ this-> container-> get( 'validator') - > getMetadataFactory() - > getClassMetadata(" Namespace \ JobBundle \ Entity \ Job ");'を試しましたか? –

+0

は、$ properties属性に実際に制約配列が含まれていることに気がつきました。あなたの提案も同じ結果を示します。回答をいただければうれしく思います。 – Youssef

答えて

15

新しいクラスのメタデータをインスタンス化するのではなく、おそらくバリデータサービスを使用します。サービスを通していくつかのクラスが初期化されるかどうかはわかりません。

$metadata = $this->container 
       ->get('validator') 
       ->getMetadataFactory() 
       ->getClassMetadata("Name‌​space\JobBundle\Entity\Job"); 

$metadataはあなたのSymfony 2.3

探しているデータを持っていると

上記
$metadata = $this->container 
       ->get('validator') 
       ->getMetadataFor("Name‌​space\JobBundle\Entity\Job"); 
+1

+1、symfony 2.3からのbtw 'getClassMetadata'は推奨されておらず、' getMetadataFor'が推奨されています。 –

5
private function getValidations() 
    { 
     $validator=$this->get("validator"); 
     $metadata=$validator->getMetadataFor(new yourentity()); 
     $constrainedProperties=$metadata->getConstrainedProperties(); 
     foreach($constrainedProperties as $constrainedProperty) 
     { 
      $propertyMetadata=$metadata->getPropertyMetadata($constrainedProperty); 
      $constraints=$propertyMetadata[0]->constraints; 
      foreach($constraints as $constraint) 
      { 
       //here you can use $constraint to get the constraint, messages etc that apply to a particular property of your entity 
      } 
     } 
    } 

$バリ=の$ this - >( "バリデータ")を取得する必要があります。
$ metadata = $ validator-> getMetadataFor(new yourentity());

オブジェクト$ metadataには、特定のエンティティに関する検証に関するすべてのメタデータが含まれるようになりました。

関連する問題