wake-up-neo.com

festlegen eines Platzhalterattributs mit Übersetzung in der Symfony2-Formulareingabe

Ich verwende FOSUserBundle zur Verwaltung meiner Benutzer. Um den Benutzer zu registrieren, habe ich die Form des Bundles wiederverwendet, die meinen Bedürfnissen entspricht. Trotzdem musste ich einige Attribute meiner Felder festlegen. Dies wurde einfach durch einen Zweig wie folgt gemacht:

    {{ form_widget(form.username, { 'attr': {'class': "span12",
        'placeholder': "Username"} }) }}

Mein Ziel ist es nun, eine automatische Übersetzung für meinen Platzhalter zu erstellen. Ich schlug daher folgenden Code vor:

    {{ form_widget(form.username, { 'attr': {'class': "span12",
        'placeholder': "{{'security.login.usernameplaceholder'|trans}}"} }) }}

Dieser vorherige Code erzeugte eine Eingabe mit einem Platzhalterwert gleich {{'' security.login.usernameplaceholder '| trans}}

Um dieses Problem zu beseitigen, habe ich versucht, eine Variable dafür zu setzen, aber Symfony hat einen Fehler generiert !!!

    {% set usernameplaceholder = {{'security.login.usernameplaceholder'|trans}} %}
    {{ form_widget(form.username, { 'attr': {'class': "span12",
        'placeholder': usernameplaceholder} }) }}

Gibt es einen Vorschlag, um dieses Problem zu lösen?

Vielen Dank,

12
Amine Jallouli

In Twig sollte {{ nicht in {{ (gleiches für {%) eingefügt werden. Betrachten Sie es als das PHP-Tag.

Folgendes sollte funktionieren

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

Für Symfony 3.x, 4.x

Eine weitere Möglichkeit, Platzhalter (oder beliebige Attribute für diese Angelegenheit) hinzuzufügen, besteht darin, ein Options-Array an das Formular $builder zu übergeben, das ein anderes Array attr mit Attributen als Schlüssel enthält -Wertpaare.

// The parameters are column name, form-type and options-array respectively.
$builder->add('field', null, array(
            'attr' => array(
                 'placeholder' => 'support.contact.titleplaceholder'
             )
        ));
6
Niket Pathak

Sie können es auch wie folgt zu Ihrer Formulardefinition hinzufügen:

    $builder
        ->add('information', 'textarea', array(
            'label' => false,
            'required' => true,
            'constraints' => [
                new NotBlank()
            ],
            'placeholder' => 'support.contact.titleplaceholder',
        ));
0
crmpicco

Sie können diesen Weg auch (mit symfony4) in twig übersetzen: In einem Formular-Platzhalter, der wie folgt geschrieben würde:

{'attr':{'placeholder': "Text to translate"}}

Was einen Platzhalter in HTML betrifft, der so geschrieben werden würde, können Sie folgendermaßen übersetzen:

<input placeholder="{{"Text to translate"|trans }}">
0
Michaeldc