繁体   English   中英

在 Symfony 中显示约束验证器错误消息

[英]Display constraint validator error messages in Symfony

我不知道如何显示我的约束验证器错误消息。

错误被正确检测到,因为如果我在表单中输入 null 或负值,则会显示“错误”一词(参见 twig 文件),但不会显示验证器的错误消息。

不,我不想直接在我的验证上管理我的错误消息。yaml。

不,我不想直接在我的表单上管理我的错误消息。

我需要在我的验证文件夹中正确执行此操作,因为我会有很多。

src/Validator/Constraints/Type.php:

<?php

namespace App\Validator\Constraints;

use Symfony\Component\Validator\Constraint;

class Type extends Constraint
{

    public $numericPositiveNotNull = "Merci de renseigner une valeur numérique, positive et non nulle";

    public function validatedBy()
    {
        return \get_class($this).'Validator';
    }
}

src/Validator/Constraints/TypeValidator.php

<?php

namespace App\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;


class TypeValidator extends ConstraintValidator
{

    public function validate($value, Constraint $constraint)
    {
        if (!is_int($value)) {
            $this->context->buildViolation($constraint->numericPositiveNotNull)
                ->addViolation();
        }
    }
}

验证器/验证.yaml

App\Entity\Donation:
    properties:
      weight:
        - App\Validator\Constraints\Type: ~

捐赠控制器.php

[...]
        return $this->render('/donation/donationFormCreate.html.twig', [
            'form' => $form->createView(),
            'formHasErrors' => $form->isSubmitted() && !$form->isValid(),
        ]);

捐赠FormCreate.html.twig

        {% if formHasErrors %}
             Erreur
            {{ form_errors(form) }}
        {% endif %}
[...]

您在那里没有收到任何错误消息,因为您只显示适用于整个表单/已验证 class 的“全局”错误。

但是,您的自定义验证器已附加到特定属性,因此当该验证失败时,您的消息也将附加到该属性。 即看到你的错误信息,你必须打电话

{{ form_errors(form.weight) }}

这旨在用于特定表单字段而不是整个表单旁边。

请参阅https://symfony.com/doc/current/form/form_customization.html#form-errors-form-view以供参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM