Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony,在表单中预先提示/显示验证约束消息_Php_Forms_Symfony_Validation_Twig - Fatal编程技术网

Php Symfony,在表单中预先提示/显示验证约束消息

Php Symfony,在表单中预先提示/显示验证约束消息,php,forms,symfony,validation,twig,Php,Forms,Symfony,Validation,Twig,当我有一个表单和一些约束规则,如max value或LessThanOrEqual,我如何显示此规则条件,以便用户知道输入接受的数据格式 我想显示验证失败后(表单提交后)出现的相同消息,使其始终可见,位于相应的 更多信息 我在各自的buildForm中都有这一点,您可以看到LessThanOrEqual具有动态的可能值。因此,总是向用户确认可以输入的最大值是很好的 $builder ->add('amount', null, [ 'const

当我有一个表单和一些约束规则,如
max value
LessThanOrEqual
,我如何显示此规则条件,以便用户知道输入接受的数据格式

我想显示验证失败后(表单提交后)出现的相同消息,使其始终可见,位于相应的

更多信息

我在各自的
buildForm
中都有这一点,您可以看到
LessThanOrEqual
具有动态的可能值。因此,总是向用户确认可以输入的最大值是很好的

    $builder
        ->add('amount', null, [
            'constraints' => [
                new LessThanOrEqual($maxValue)
            ]
        ])
我知道我可以使用help属性,但是再次定义翻译文本会有点多余,因为所有的验证规则都已经设置好了。因此,最好只显示相同的消息,该消息将在提交验证失败的表单后显示。在我的例子中:

此值应小于或等于{{比较值}

多谢各位

编辑: 这将通过实时javascript验证部分解决,该验证将实时验证并通知用户,只需使用一些javascript(jQuery,…)插件

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

编辑2: 在我看来,细枝只是基本的,没有什么特别的:

{{ form_start(form) }}
    {{ form_widget(form) }}
    <button class="btn btn-success">{{ button_label|default('Save'|trans) }}</button>
{{ form_end(form) }}
{{form_start(form)}
{{form_widget(form)}
{{button_label | default('Save'| trans)}}
{{form_end(form)}}

因为symfony 4.3可以使用“帮助翻译参数”,所以这应该可以使用

    $constraint = new LessThanOrEqual(7); // create constraint
    $builder
        ->add('amount', null, [
            'constraints' => [
                $constraint
            ],
            'help' => $constraint->message,
            'help_translation_parameters' => ['{{ compared_value }}' => $constraint->value]
        ])
    ;

帮助存在,您应该使用它。您可以读取约束上的
message
属性的值,但如果您只是将其指定为
帮助
文本,则不会被插入。我不认为,您必须自己执行。您可以编辑您的问题并添加查看页面的代码吗?(你有
form\u start
的代码…
form\u end
)我编辑了这篇文章,并从twig视图中添加了代码。我试过了,效果不错。令人惊叹的但是,问题在于翻译。我在validators.csxlf中有验证消息,但金额在不同的translatino文件中转换。我只知道translation\u domain属性,不幸的是这两个属性都会产生影响。我可以用一个翻译域翻译一个,用不同的域翻译帮助吗?您可以在构造函数中自动连接TranslatorInterface,并将其用于翻译帮助属性。”帮助'=>$this->translator->trans($constraint->message,['{{compared_value}}'=>$constraint->value],'validators')我试过了,它可以正常工作。再一次谢谢你@fbuchlak