2016-03-15 131 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