Symfony 3 FormType 使用 attr 的翻译
Symfony 3 FormType use translation for attr
我目前正在为一个人开发 FormType。我想要自定义有效性消息,所以我使用 oninvalid
和 onchange
属性。但是,这些属性中使用的翻译将不起作用。我只收到一条自定义有效性消息,上面写着 "person.label.firstname".
标签和占位符的翻译有效。那么为什么它不能与 onchange 和 oninvalid 一起使用呢? (是的,翻译确实存在)
$builder->add("firstname", TextType::class, array(
"label" => "person.label.firstname",
"attr" => array("placeholder" => "person.label.firstname",
"pattern" => "^[a-zA-Z \-]+",
"oninvalid" => 'setCustomValidity("person.validity.firstname")')
))
提前致谢。
placeholder
的翻译有效,因为 trans
过滤器应用于呈现表单小部件的默认模板,如您在此处所见:https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig#L333
但即使 trans
过滤器应用于所有属性,它可能仍然不会按预期运行,因为 oninvalid
的值是 setCustomValidity("person.validity.firstname")
,而我我猜你只想翻译 person.validity.firstname
。
要解决您的问题,请将 translator
服务注入您的表单类型并使用明确翻译的值设置属性:
$builder->add("firstname", TextType::class, array(
"label" => "person.label.firstname",
"attr" => array("placeholder" => "person.label.firstname",
"pattern" => "^[a-zA-Z \-]+",
"oninvalid" => 'setCustomValidity("' . $this->translator->trans('person.validity.firstname') . '")'
))
我目前正在为一个人开发 FormType。我想要自定义有效性消息,所以我使用 oninvalid
和 onchange
属性。但是,这些属性中使用的翻译将不起作用。我只收到一条自定义有效性消息,上面写着 "person.label.firstname".
标签和占位符的翻译有效。那么为什么它不能与 onchange 和 oninvalid 一起使用呢? (是的,翻译确实存在)
$builder->add("firstname", TextType::class, array(
"label" => "person.label.firstname",
"attr" => array("placeholder" => "person.label.firstname",
"pattern" => "^[a-zA-Z \-]+",
"oninvalid" => 'setCustomValidity("person.validity.firstname")')
))
提前致谢。
placeholder
的翻译有效,因为 trans
过滤器应用于呈现表单小部件的默认模板,如您在此处所见:https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig#L333
但即使 trans
过滤器应用于所有属性,它可能仍然不会按预期运行,因为 oninvalid
的值是 setCustomValidity("person.validity.firstname")
,而我我猜你只想翻译 person.validity.firstname
。
要解决您的问题,请将 translator
服务注入您的表单类型并使用明确翻译的值设置属性:
$builder->add("firstname", TextType::class, array(
"label" => "person.label.firstname",
"attr" => array("placeholder" => "person.label.firstname",
"pattern" => "^[a-zA-Z \-]+",
"oninvalid" => 'setCustomValidity("' . $this->translator->trans('person.validity.firstname') . '")'
))