我试图完成以下任务:
$builder->add('some_field', 'some_type', array(
// ...
'invalid_message' => 'You entered an invalid value: %1%',
'invalid_message_parameters' => array('%1%' => ?),
));
我的问题是,我无法弄清楚在哪里获得%1%的价值。
通过阅读文档并进行搜索,我就想到了这一点。有没有其他方法可以实现这个目标?
答案 0 :(得分:0)
如果再次查看文档,您将看到您在此处复制的特定示例仅适用于某些formTypes(因为整数)不适用于您想要实现的目标。
阅读this first。那里有很多Constraint示例以及如何设置正确的错误消息。
从您的代码中,您无法猜测您想要做什么,因为没有任何Contraint定义输入值无效。 我建议在实体中进行验证,如果可以的话,那么你可以将它们保存在Resources / config / validation.yml中
然后你可以做类似的事情:
Acme\BlogBundle\Entity\Author:
properties:
email:
- Email:
message: The email "{{ value }}" is not a valid email.
价值会打印出你想要的东西。如果您需要,可以定义custom Constraint。
答案 1 :(得分:0)
如果您的表单基于实体,则应使用validation.yml文件来使用约束。如果没有(或者如果你是懒惰的话),你也可以使用php在表单中添加约束:
#Load the constraint you are going to use (for example length, which put min or max limits to your input length
use Symfony\Component\Validator\Constraints\Length;
# ...
#then in your controller or formtype where you build your form:
$form=$this->createFormBuilder()
->add('newPassword', 'password', array(
'required' => true,
'constraints' => array(
new Length(array(
'min' => 8,
'minMessage' => 'You have entered {{ value }} which is under the limit length {{ limit }}')))))
->getForm();
在此示例中,我构建了一个必须高于限制(8)的密码输入。请注意我如何在此输入中实现length
约束。然后使用{{ value }}
打印消息以访问输入的值。您应该找到不同约束如何实现消息,在“长度约束”的情况下,您可以为其他约束设置'minMessage'和'maxMessage',您只能使用'消息'。
答案 2 :(得分:0)
如果您喜欢我正在搜索要在投掷TransformationFailedException
时设置的验证消息,您只需使用由Symfony预先填充的{{ value }}
。
$builder->add('some_field', 'some_type', array(
// ...
'invalid_message' => 'You entered an invalid value: {{ value }}'
));