我正在使用Symfony2 2.5.2和Sonata Admin Bundle进行小型项目。
对于我用Sonata生成CRUD UI的其中一个实体,我需要一个我根据Symfony2食谱创建的自定义验证规则。
我的问题是:对于使用此自定义约束验证的字段,似乎未应用错误CSS。当我做addViolation(" message")时,"消息"被添加到显示的错误列表中,但是使用经典验证器验证的字段有一个应用于它们的错误CSS类,那些使用我的自定义约束验证的字段没有视觉样式。
有人能说出可能出错的地方吗?我还没有在这里找到类似的主题。就验证而言,对我来说似乎都很好。
谢谢!
答案 0 :(得分:1)
您可以为自定义验证创建回调,定义错误消息并将其保存到" sonata_flash_error",这应该可以。
$formMapper
->with('form.group_general')
->add('parent', 'doctrine_phpcr_odm_tree',
array(
'constraints' => array(new Assert\Callback(array(array($this, 'validateParent')))
)
));
public function validateParent($event, ExecutionContextInterface $context){
$user = $this->getCurrentUser();
if (!$user->hasRole('ROLE_SONATA_ADMIN')){
$errorMessage = 'You are not allowed to change this value';
$context->buildViolation($errorMessage)
->addViolation();
$this->addFlash('sonata_flash_error', $errorMessage);
}
}