Search code examples
symfonytwigsymfony-formsfosuserbundle

setting a placeholder attribute with translation in Symfony2 form input


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,


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