我在documentation之后向我的实体添加了UniqueEntity
约束。约束工作正常,我收到默认错误消息:
此值已被使用。
当我用unique_entity.message
等翻译密钥替换消息并在validators.en.yml
中添加此密钥(我成功地将其他断言翻译添加到该文件中)时,错误消息是翻译密钥本身而不是已翻译的消息。
我尝试清除缓存,但没有用。我尝试检查约束文件的源代码,但我在许多文件中丢失了,从我能找到的,它应该可以工作。
任何人都知道我做错了什么?
答案 0 :(得分:1)
我找到了原因,我正在使用函数get获取错误列表,在json中对它们进行编码以使用ajax形式,这就是函数:
private function getFormErrorMessages(Form $form)
{
$errors = array();
foreach ($form->getErrors() as $key => $error) {
$template = $error->getMessageTemplate();
$parameters = $error->getMessageParameters();
$error = $template;
foreach ($parameters as $var => $value) {
$error = str_replace($var, $value, $template);
}
$errors[] = array(
'error' => $error,
'template' => $template,
'parameters' => $parameters,
);
}
if ($form->count()) {
foreach ($form as $child) {
if (!$child->isValid()) {
$errors = array_merge($errors, $this->getFormErrorMessages($child));
}
}
}
return $errors;
}
嗯,碰巧这个函数得到翻译的正常错误(来自Asserts),而不是UniqueEntity错误。也许在视图创建过程中似乎已经翻译了。
因此,我没有获取错误列表,而是返回包含json中错误的新呈现表单,并用它替换旧表单,并且所有错误都按照它们应该进行转换。