2017-02-09 13 views
0

エンティティ変数を検証する方法は、私の中では空のselectに対して有効です。あなたは$ educationLevelがnullまたはEducationLevelインスタンスの集合であるかどうかを確認することができますエンティティで検証メソッドを作成することができますsymfonyがエンティティタイプ変数をアサートする

/** 
* @Assert\NotBlank(message = "education level cannot be empty") 
* @var EducationLevel[]|ArrayCollection 
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\EducationLevel") 
*/ 
private $educationLevel; 

フォームタイプ

->add('educationLevel', EntityType::class, [ 
      'class' => 'AppBundle:EducationLevel', 
      'multiple' => true, 
      'choice_label' => function ($educationLevel) { 
       return $educationLevel->getName(); 
      }, 
     ]) 

答えて

0

/** 
* @Assert\IsTrue(message="Education level has to be blank or...") 
*/ 
public function isEducationLevelValid() 
{ 
    if ($this->educationLevel->isEmpty()) { 
     foreach ($this->educationLevel as $edulevel) { 
      if (!$edulevel instanceof EducationLevel) { 
       return false; 
      } 
     } 
     return true; 
    } else { 
     return false; 
    } 
} 

このメソッドは、エンティティにバインドされたフォームの送信中に自動的に使用されます。もちろん、通常のエンティティのメソッドとして使用できます。

+0

ありがとう、これは仕事を断言しますが、教育lvlが空で空でない場合はいつも動作します:) –

+0

私はこの行が必要です* @Assert \ IsTrue(message = "教育レベルは空白でなければなりません"誰がチェックしているか、有効で、 –

+0

私はこの問題を解決しましたarrayCollectionのメソッドでチェックする必要がありますisEmpty() –

1

NotBlankそれはチェックしているため、動作しません値がfalse空ヌルか文字列でないかどう NotBlank manual

何がしなければならないことは、カスタム制約とバリデータを作成することです:

Custom validator manual

関連する問題