J'utilise FOSUserBundle pour gérer mes utilisateurs. Afin d’enregistrer un utilisateur, j’ai réutilisé le formulaire du paquet qui répond à mes besoins. Néanmoins, je devais définir certains attributs de mes champs. Cela a été fait facilement par twig comme ceci:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "Username"} }) }}
Maintenant, mon but est de faire de la traduction automatique sur mon espace réservé, alors j'ai proposé ce code:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "{{'security.login.usernameplaceholder'|trans}}"} }) }}
Ce code précédent a généré une entrée dont la valeur d’espace réservé est égale à {{'security.login.usernameplaceholder' | trans}}
Pour résoudre ce problème, j'ai essayé de définir une variable pour cela, mais symfony a généré une erreur !!!
{% set usernameplaceholder = {{'security.login.usernameplaceholder'|trans}} %}
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': usernameplaceholder} }) }}
Y a-t-il une proposition pour résoudre ce problème?
Merci,
Dans Twig, vous ne devriez pas mettre {{
dans {{
(idem pour {%
); Pensez-y comme la balise php.
Ce qui suit devrait fonctionner
{% 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} }) }}
Une autre façon d'ajouter des espaces réservés (ou tous les attributs d'ailleurs) est de passer un options-array au formulaire $builder
contenant un autre Array attr
avec des attributs sous forme de paires clé-valeur.
// The parameters are column name, form-type and options-array respectively.
$builder->add('field', null, array(
'attr' => array(
'placeholder' => 'support.contact.titleplaceholder'
)
));
Vous pouvez également l'ajouter à votre définition de formulaire comme ceci:
$builder
->add('information', 'textarea', array(
'label' => false,
'required' => true,
'constraints' => [
new NotBlank()
],
'placeholder' => 'support.contact.titleplaceholder',
));