首页 > 解决方案 > 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])
    ;
}

当前显示

预计将在名称字段上获得 32 个最大长度

谢谢帮助

标签: symfonysonata

解决方案


看起来您需要做的是覆盖此验证配置: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>

推荐阅读