我目前正在开发FormType,我想在其中使用特殊属性的翻译器。
$builder->add("firstname", TextType::class, array(
"label" => "person.label.firstname",
"attr" => array(
"placeholder" => "person.label.firstname",
"pattern" => "^[a-zA-Z \-]+",
"oninvalid" => 'setCustomValidity("' . $translator->trans('person.validity.firstname') . '")')
))
那我如何让$translator
工作?我是否必须将其作为服务注入(如何?)或者我应该将其作为参数传递给此formtype(仍然如何?)?
提前谢谢。
答案 0 :(得分:1)
我同意@Matteo,它应该直接在你的表格中开箱即用。
[project] \ app \ config \ config.yml应该有:
framework:
....
translator: {fallbacks:["en"]}
translator:
paths:
- "@[App]Bundle/Resources/translations"
...
在“[projet] \ src [App] Bundle \ Ressources \ translations \”所有文件:“message。[lang 2 char code] .yml”
在您的情况下,文件“messages.en.yml”应如下所示:
person:
label:
firstname: "firstname"
lastname: "lastname"
同样,“。mil”文件不接受“标签符号”(仅“空格标志”)。
验证消息也应该在“[projet] \ src [App] Bundle \ Ressources \ translations \”下的文件中命名为:“validators。[lang 2 char code] .yml”
在你的情况下“validators.en.yml”:
person:
validity:
firstname: "firstname doesn't match"
“firstname”的有效性规则应该是与表单一起使用的data_class中的注释。
class [YOUR DATA_CLASS] {
/**
* @Assert\NotBlank()
* @Assert\Regex(
* groups= {[if needed]}
* pattern = "^[a-zA-Z \-]+",
* match= "false",
* message = "person.validity.firstname")
*
*/
public $firstname;
}