我的简单数据转换器将数字转换为实体,反之亦然。这很像 official documentation 中的例子.reverseTransform
方法将数字转换为实体,失败时抛出 TransformationFailedException
带有描述性消息:
public function reverseTransform($number)
{
if (!$number) {
return null;
}
$issue = $this->om
->getRepository('AcmeTaskBundle:Issue')
->findOneBy(array('number' => $number))
;
if (null === $issue) {
throw new TransformationFailedException(sprintf(
'An issue with number "%s" does not exist!',
$number
));
}
return $issue;
}
但是,使用上述转换器的表单字段会收到一条通用错误消息“此值无效”。即使更改异常文本(我希望用作验证消息,但它不是......)也不会更改错误消息。
如何显示异常文本而不是“此值无效”?
最佳答案
绝不会,因为 symfony 捕获了这个异常并设置了自己的消息(字段不正确)。
如果您想自定义此消息,则必须将验证器设置为该字段。
也许我错了,但没有发现任何东西。
例如:
public function reverseTransform($number)
{
if (!$number) {
return null;
}
$issue = $this->om
->getRepository('AcmeTaskBundle:Issue')
->findOneBy(array('number' => $number))
;
if (null === $issue) {
// Nothig action
//throw new TransformationFailedException(sprintf(
// 'An issue with number "%s" does not exist!',
// $number
//));
}
return $issue;
}
并将 NotBlank/NotNull 验证器添加到字段。
UPD
您可以在表单类型中设置参数“invalid_message”。
例如:
$builder
->add('you_field', 'text', array('invalid_message' => 'An issue number not found'))
->get('you_field')->addModelTransformer('....');
关于symfony - 如何在 Symfony 中自定义 DataTransformer 错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19754436/