我正在使用FOSUserBundle来管理我的用户。为了注册用户,我重用了满足我需求的包的形式。不过,我需要设置我的字段的一些属性。这样做很容易就像这样:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "Username"} }) }}
现在,我的目标是在占位符上进行自动翻译,所以我提出了这个代码:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "{{'security.login.usernameplaceholder'|trans}}"} }) }}
此前一代码生成的输入占位符值等于 {{'security.login.usernameplaceholder'| trans}}
为了摆脱这个问题,我尝试为此设置变量,但symfony生成错误!!!
{% set usernameplaceholder = {{'security.login.usernameplaceholder'|trans}} %}
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': usernameplaceholder} }) }}
有什么建议可以解决这个问题吗?
谢谢,
答案 0 :(得分:28)
在Twig中,您不应将{{
放在{{
内({%
也一样);把它想象成php标签。
以下内容应该有效
{% set usernameplaceholder = 'security.login.usernameplaceholder'|trans %}
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': usernameplaceholder} }) }}
OR
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': 'security.login.usernameplaceholder'|trans} }) }}
答案 1 :(得分:6)
添加占位符(或任何属性)的另一种方法是将 options-array 传递给包含另一个的表单$builder
数组attr
,其中属性为键值对。
// The parameters are column name, form-type and options-array respectively.
$builder->add('field', null, array(
'attr' => array(
'placeholder' => 'support.contact.titleplaceholder'
)
));
答案 2 :(得分:0)
您还可以将其添加到表单定义中,如下所示:
<form id = "uploadForm"
enctype = "multipart/form-data"
action = "/api/uploadfile"
method = "post">
<input type="file" name="fileUpload"/>
<input type="submit" value="Upload File" name="submit">
</form>
答案 3 :(得分:0)
您也可以在树枝中以这种方式翻译(使用symfony4): 在窗体占位符中,将这样写:
{'attr':{'placeholder': "Text to translate"}}
至于html wich中的占位符应这样写,您可以这样翻译:
<input placeholder="{{"Text to translate"|trans }}">
答案 4 :(得分:0)
如果要在form-type中(而不是在模板中)设置占位符,则必须在attr
选项内设置占位符。例如:
->add('search', TextType::class, ['attr' => ['placeholder' => 'form.custom.placeholder']])
要在后台翻译占位符,必须adjust the form-theme。 在我们的情况下,我们只想在表单类型中显式设置translation_domain时触发自动翻译。这就是我们实现自动翻译的方式:
{% block form_widget_simple -%}
....
{% if attr.placeholder|default and translation_domain|default %}
{%- set attr = attr|merge({placeholder: (attr.placeholder|trans({}, translation_domain))|trim}) -%}
{% endif %}
....
{{- parent() -}}
{%- endblock form_widget_simple %}
如果您想始终触发自动翻译。这应该起作用:
{% block form_widget_simple -%}
....
{%- set attr = attr|merge({placeholder: (attr.placeholder|default|trans({}, translation_domain))|trim}) -%}
....
{{- parent() -}}
{%- endblock form_widget_simple %}