setting a placeholder attribute with translation in Symfony2 form input

fosuserbundle, symfony, symfony-forms, twig

Solution

In Twig you shouldn't put `{{` within `{{` (same for `{%`); think of it as the php tag.

The following should work

{% 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} }) }}

Problem

I am using FOSUserBundle for managing my users. In order to register user, I reused the form of the bundle which meets my needs. Nevertheless, I needed to set some attributes of my fields. This is was done easyly by twig like this: ``` {{ form_widget(form.username, { 'attr': {'class': "span12", 'placeholder': "Username"} }) }} ``` Now, my goal is to make automatic translation on my placeholder, so I proposed this code: ``` {{ form_widget(form.username, { 'attr': {'class': "span12", 'placeholder': "{{'security.login.usernameplaceholder'|trans}}"} }) }} ``` This previous code produced an input with placeholder value equal to {{'security.login.usernameplaceholder'|trans}} To get rid of this problem, I tried to set variable for that but symfony generated an error!!! ``` {% set usernameplaceholder = {{'security.login.usernameplaceholder'|trans}} %} {{ form_widget(form.username, { 'attr': {'class': "span12", 'placeholder': usernameplaceholder} }) }} ``` Is there any proposition to solve this problem? Thanks,

Original source

Related problems