2016-03-15 134 views
0

我在Sonata Admin中驗證時遇到了問題。Sonata管理員驗證

在前端爲客戶我有兩種形式:註冊和ProfileEdit。基於FOSU​​ser。爲驗證規則是:

的src/UserBundle /資源/配置/ validation.yml

有兩組驗證爲每個表單。對於我來說,最好在後端使用這個規則,並添加一個像AdminProfileEdit這樣的組,因爲前端表單存在差異。但是,我不明白如何配置? 在文檔我讀到inlineValidation - 加入UserAdmin類中的方法

/** 
* @param ErrorElement $errorElement 
* @param mixed $object 
*/ 
public function validate(ErrorElement $errorElement, $object) 
{ 
    $errorElement 
     ->with('profile.firstname') 
      ->assertNotBlank() 
     ->end() 
     .... 
    ; 
} 

但對我來說是糟糕的解決方案有2個驗證CONFIGS。在https://sonata-project.org/bundles/admin/2-0/doc/reference/conditional_validation.html我無法找到一個很好的解釋如何驗證後端表單。

在奏\爲廢棄AdminBundle \管理員\ AdminInterface方法驗證標記:

  • @deprecated此功能不能穩定,使用自定義的驗證器,
  • 的功能將被用symfony 2.2
  • 除去

這是什麼意思?以及如何驗證?有人可以一步一步寫出該怎麼辦?即使我需要什麼方法或配置?

請幫助別人,我需要快速完成任務,並且沒有計劃或解決方案。

回答

0

您可以定義驗證組的管理員,並指定其爲form option in the admin class

protected $formOptions = array(
    'validation_groups' => array('SomeGroup'), 
); 
+0

我tryed這一點。在Admin類中: public function getFormBuilder() {this-> formOptions ['data_class'] = $ this-> getClass(); $ options = $ this-> formOptions; $ options ['validation_groups'] ='AdminProfile'; $ options ['cascade_validation'] = true; ($ this-> getUniqid(),$ options); $ getBuilder = $ this-> getFormContractor() - > getFormBuilder($ this-> getUniqid(),$ options); $ this-> defineFormBuilder($ formBuilder); return $ formBuilder; } 並添加了組以配置validation.yml。但表單保存沒有驗證錯誤,即使他們應該。 – dmma

+0

我不明白爲什麼在後端validation.yml不起作用。在前端,這一切都很好 – dmma