Php 如何在sonata admin中显示自定义错误

Php 如何在sonata admin中显示自定义错误,php,symfony,sonata-admin,Php,Symfony,Sonata Admin,我有菜单bundle,我想在sonata admin中显示我的自定义错误 管理员:MenuAdmin.php /** * {@inheritdoc} */ public function validate( ErrorElement $errorElement, $object ) { // if ( $object->getEnabled() == false && $object->getMenuType() == 'header' ) {

我有
菜单bundle
,我想在sonata admin中显示我的自定义错误

管理员:
MenuAdmin.php

/**
 * {@inheritdoc}
 */
public function validate( ErrorElement $errorElement, $object ) {
    //
    if ( $object->getEnabled() == false && $object->getMenuType() == 'header' ) {
        $custom_error = 'Header menu cannot be disabled, please mark enabled to checked.';
        $errorElement->with( 'enabled' )->addViolation( $custom_error )->end();
    }
}
管理中的FormMapper

protected function configureFormFields( FormMapper $formMapper ) {
        $formMapper
            ->add( 'title' )
            ->add( 'menuType', 'choice', array(
                'choices'  => array(
                    'header'        => 'Header',
                    'footer_left'   => 'Footer Left',
                    'footer_right'  => 'Footer Right',
                    'footer_bottom' => 'Footer Bottom'
                ),
                'expanded' => true,
                'multiple' => false
            ) )
            ->add( 'enabled' );
    }
验证工作正常,但未出现自定义错误

解决方案#1:使用

只需在字段上使用
error\u bubbling=>true

解决方案#1的注意事项:不要忘记添加以下内容
在admin中使用
验证程序服务

使用Sonata\AdminBundle\Validator\ErrorElement

解决方案#2:With

我是用电脑做的

菜单管理员

/**
     * {@inheritdoc}
     */
    public function validate( ErrorElement $errorElement, $object ) {
        //
        if ( $object->getEnabled() == false && $object->getMenuType() == 'header' ) {
            $error = 'Header menu cannot be disabled, please mark enabled to checked.';
            $errorElement->with( 'enabled' )->addViolation($error)->end();
            $this->getRequest()->getSession()->getFlashBag()->add( "menu_type_check", $error );
        }

    }
YML

路径:YourBundle\Resources\config\admin.yml


已检测到错误,这就是为什么复选框设置为红色,如果鼠标在启用标签中聚焦,是否显示错误?你能用分析器看到还有其他错误吗?是的,自定义错误显示在鼠标上方,但我想把错误设置为红色条。但是分析器没有任何其他错误。
/**
     * {@inheritdoc}
     */
    public function validate( ErrorElement $errorElement, $object ) {
        //
        if ( $object->getEnabled() == false && $object->getMenuType() == 'header' ) {
            $error = 'Header menu cannot be disabled, please mark enabled to checked.';
            $errorElement->with( 'enabled' )->addViolation($error)->end();
            $this->getRequest()->getSession()->getFlashBag()->add( "menu_type_check", $error );
        }

    }
sonata_core:
    flashmessage:
        error:
            #css_class: error_msg # optionally, a CSS class can be defined
            types:
                - { type: menu_type_check, domain: YourBundle }