Symfony,先发制人地在表单中显示验证约束信息。

问题描述 投票:0回答:1

当我有一个表格和一些约束规则时,如 max valueLessThanOrEqual我如何才能显示这个规则条件,让用户知道输入接受什么数据格式?

我想在验证失败后(表单提交后),显示同样的信息,一直可见,靠近各自的 <input>

更多信息

我有这个在各自的 buildForm你可以看到 LessThanOrEqual 有动态的可能值。所以,如果能让用户知道可以输入的最大数值,那就更好了。

    $builder
        ->add('amount', null, [
            'constraints' => [
                new LessThanOrEqual($maxValue)
            ]
        ])

我知道我可以使用 帮助 属性,但再次定义翻译文本有点多余,因为所有的验证规则都已经设置好了。所以,如果能在提交表单时显示同样的消息就更好了。所以在我的例子中。

这个值应该小于或等于{{ compared_value }}。

谢谢你了

EDIT: 这个问题可以通过javascript的实时验证来解决,只要使用一些javascript(jQuery,...)插件,就可以实时验证并通知用户。

但是,在输入的旁边显示一个简单的文本信息(告知验证规则)也是很好的--这不是这个javascript解决方案所能解决的。

EDIT 2:在我的 twig 视图中只是基本的,没有什么特别的。

{{ form_start(form) }}
    {{ form_widget(form) }}
    <button class="btn btn-success">{{ button_label|default('Save'|trans) }}</button>
{{ form_end(form) }}
php forms symfony validation twig
1个回答
1
投票

从symfony 4.3开始,你可以使用'help_translation_parameters',所以这应该可以。

    $constraint = new LessThanOrEqual(7); // create constraint
    $builder
        ->add('amount', null, [
            'constraints' => [
                $constraint
            ],
            'help' => $constraint->message,
            'help_translation_parameters' => ['{{ compared_value }}' => $constraint->value]
        ])
    ;
© www.soinside.com 2019 - 2024. All rights reserved.