2016-06-11 99 views
5

我有清除所有從超類擴展的驗證約束的問題。下面是我的代碼刪除子類屬性中的所有驗證約束條件

user.php的

* @var string 
    * @ORM\Column(type="text", unique=true) 
    * @Assert\NotBlank() 
    * @Assert\NotNull() 
    * @AdminAssert\MyCustomValidation 
    */ 
protected $phoneNumber; 

在admin.php的,我寫的代碼類似下面

類管理擴展用戶

* @var string 
    * @ORM\Column(type="text", unique=true) 
    */ 
protected $phoneNumber; 

我想刪除所有驗證約束但不能刪除它。

回答

2

要禁用表單的驗證,您可以將validation_groups選項設置爲false,如文檔中的所述。

在你的情況,你可以檢查類數據(as described here in the doc)來禁用或不表單驗證,例如:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'validation_groups' => function (FormInterface $form) { 
      $data = $form->getData(); 

      if ($data instanceof Admin) { 
       return; 
      } 

      return array('Default'); 
     }, 
    )); 
} 

Hovenever在你的代碼中,我看到管理員驗證AA自定義驗證,如果是這樣考慮使用驗證組。

希望這有助於

+0

Erb,my bad,我把錯誤的命名約定。任何方式它工作正常我,謝謝@Matteo,但我只是改變你的代碼中的東西,像這個$ data instanceof Admin並返回; (沒有錯誤)不能確定爲什麼false不起作用。 – vibol

+0

hi @vibol歡迎您!隨意用正確的工作代碼編輯我的答案。 – Matteo

0

由於管理類「擴展」,或從用戶類繼承,你將需要刪除的約束用戶,像這樣:

* @var string 
    * @ORM\Column(type="text", unique=true) 
    */ 
protected $phoneNumber; 

希望,這就是你需要什麼?

+0

在我的代碼我已經把喜歡你,但沒有奏效 – vibol

+0

確保你從你的Symfony的根目錄下運行這個命令:'PHP斌/控制檯學說:架構:更新--force '你做了這些修改後 –

+0

我跑了它,但仍然存在問題 – vibol