Symfony - Sonata 管理员 - 覆盖验证

问题描述

我正在使用奏鸣曲管理员,我试图覆盖类别名称允许的最大长度

我有一个实体 MyEntity 扩展 Application\Sonata\ClassificationBundle\Entity\Category

// MyEntity 管理类

我把这个函数放在下面,关于https://sonata-project.org/bundles/core/master/doc/reference/conditional_validation.html#inline-validation

public function validate(\Sonata\Form\Validator\ErrorElement $errorElement,$object)
{
    parent::validate($errorElement,$object);

    $errorElement->with('name')
            ->assertLength(['max' => 100])
    ;
}

Current display

期望在名称字段上使用此 32 最大长度

感谢帮助

解决方法

看起来您需要做的是覆盖此验证配置:https://github.com/sonata-project/SonataClassificationBundle/blob/3.x/src/Resources/config/validation.xml

<class name="Sonata\ClassificationBundle\Model\Category">
    <property name="name">
        <constraint name="NotBlank"/>
        <constraint name="Length">
            <option name="min">2</option>
            <option name="max">32</option>
        </constraint>
    </property>
</class>