Symfony,先发制人 hint/display 表单中的验证约束消息
Symfony, preemptively hint/display validation constraint message in a form
当我有一个表单和一些约束规则时,如 max value
或 LessThanOrEqual
,我如何显示此规则条件以便用户知道输入接受的数据格式?
我想显示在验证失败后(表单提交后)出现的相同消息始终可见,在各自 <input>
[= 附近的某个地方19=]
更多信息
我在相应的 buildForm
中有这个,正如您所看到的 LessThanOrEqual
具有动态可能值。因此,最好始终让用户了解可以输入的最大值。
$builder
->add('amount', null, [
'constraints' => [
new LessThanOrEqual($maxValue)
]
])
我知道我可以使用 help 属性,但是重新定义翻译文本有点多余,因为所有的验证规则都已经设置好了。因此,最好只显示相同的消息,该消息将在提交验证失败的表单后出现。所以在我的例子中:
This value should be less than or equal to {{ compared_value }}
谢谢
编辑:
这将通过实时 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) }}
因为 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]
])
;
当我有一个表单和一些约束规则时,如 max value
或 LessThanOrEqual
,我如何显示此规则条件以便用户知道输入接受的数据格式?
我想显示在验证失败后(表单提交后)出现的相同消息始终可见,在各自 <input>
[= 附近的某个地方19=]
更多信息
我在相应的 buildForm
中有这个,正如您所看到的 LessThanOrEqual
具有动态可能值。因此,最好始终让用户了解可以输入的最大值。
$builder
->add('amount', null, [
'constraints' => [
new LessThanOrEqual($maxValue)
]
])
我知道我可以使用 help 属性,但是重新定义翻译文本有点多余,因为所有的验证规则都已经设置好了。因此,最好只显示相同的消息,该消息将在提交验证失败的表单后出现。所以在我的例子中:
This value should be less than or equal to {{ compared_value }}
谢谢
编辑: 这将通过实时 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) }}
因为 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]
])
;