Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modification du formulaire register FOSUserBundle

Sujet résolu
    6 avril 2020 à 23:33:19

    Bonjour,

    Je souhaite modifier le CSS du formulaire d'inscription de FOSUserBundle

    Donc j'ai créé un autre fichier html.twig et j'ai mis mes modifs dedans

    J'ai modifié le CSS des <input> la classe que je souhaite pour ces balises c'est la classe "field_login"

    le soucis c'est que quand symfony génère la page, il rajoute la classe "form-control" de bootstap à tous mes input automatiquement

    Or cette classe est prioritaire sur mon CSS et donc mes modifications ne sont pas prise en compte

    J'ai essayé de la supprimer avec du js après chargement de la page mais ça ne fonctionne pas

    Savez vous comment enlever le rajout automatique de cette classe  ?

    Ou une autre idée qui corrigerai mon souci ?

    Merci

    J'ai essayé de créer l'input tout seul mais ça ne marche pas ( partie en commentaire ) il rajoute le champ déjà créé lors de l'appel de la fonction form_end()

    <div style="text-align: center;">
    {{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }}
    
    {# <input type="text" class="field_login" id="{{ form.username.vars.id }}" name="{{ form.username.vars.full_name }}"
     required="required" autocomplete="username"
     placeholder="{{ 'security.login.username'|trans }}" />#}
    <div style="margin:15px;">
    {{ form_widget(form.email, {'attr': {'class': 'field_login','placeholder' : 'form.email'|trans }}) }}
    </div>
     <div style="margin:15px;">
    {{ form_widget(form.username, {'attr': {'class': 'field_login','placeholder' : 'form.username'|trans }}) }}
    </div>
     <div style="margin:15px;">
    {{ form_widget(form.plainPassword.first, {'attr': {'class': 'field_login','placeholder' : 'form.password'|trans}}) }}
    </div>
     <div style="margin:15px;">
    {{ form_widget(form.plainPassword.second, {'attr': {'class': 'field_login','placeholder' : 'form.password_confirmation'|trans}}) }}
    </div>
    {{ form_widget(form) }}
    
    <div>
     <input type="submit" value="{{ 'registration.submit'|trans }}"/>
     </div>
    {{ form_end(form) }}
    </div>

    -
    Edité par Benzouye 7 avril 2020 à 12:31:30

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      7 avril 2020 à 10:30:40

      La classe form-control est ajoutée dans le bloc form_widget_simple ; tu vas devoir le surcharger pour la virer.

      • Partager sur Facebook
      • Partager sur Twitter
        7 avril 2020 à 18:17:59

        Bonjour et merci pour la réponse

        Ok, je ne vois pas trop comment faire ?

        Mais si je la surcharge, ça va être le cas pour tous les formulaires créé via ce form-widget ? Car c'est juste dans quelques formulaires que je souhaite enlever la classe 

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          7 avril 2020 à 18:26:38

          Tu peux surcharger un bloc par formulaire ou par champ au cas par cas : https://symfony.com/doc/current/form/form_themes.html
          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2020 à 21:30:43

            Ok

            J'ai testé quelque chose mais ça ne marche pas

            Au final j'ai remplacé l'appel du form_widget(form.username)  par mon input

            Mais lors de l'appel de form_end(form)  il rajoute le champ username tout seul

            J'ai l'impression que si on appelle pas la fonction form_widget il se dit que le champ n'a pas été créé et donc il le recréé

            Mais du coup ça ne m'aide pas a enlever la classe form-control du input

            Si je fais un template ça va être le même problème

            Sur des tutos sur internet ils expliquent comment rajouter une div pour chaque champ mais ils appellent a chaque fois

             {{ form_label(form) }}
             {{ form_errors(form) }}
             {{ form_widget(form) }}

            Et donc la fonction form_widget n'est pas modifiée

            {% block _username %}
                                        <div class="form_row">
                                            {{ form_label(form.username) }}
                                            {{ form_errors(form.username) }}
                                            <input type="text" class="field_login" id="{{ form.username.vars.id }}" name="{{ form.username.vars.full_name }}"
                                                   required="required" autocomplete="username"
                                                   placeholder="{{ 'security.login.username'|trans }}" />
                                        </div>
             {% endblock  _username %}



            -
            Edité par EricLtr 7 avril 2020 à 21:32:21

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              7 avril 2020 à 21:55:25

              Crée un bloc _username_widget et Twig devrait l'utiliser pour le champ username.
              • Partager sur Facebook
              • Partager sur Twitter
                7 avril 2020 à 22:12:44

                Non il n'en tient pas compte..

                Et j'ai bien rajouté cette ligne avant

                 {% form_theme form _self %}



                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  7 avril 2020 à 22:15:29

                  Quelle version de Symfony ?

                  Poste aussi le template qu'on y voit plus clair !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 avril 2020 à 22:25:12

                    Version 3.4.21

                    J'ai essayé de mettre le template avant et après le form_start mais même resultat

                    <div class="col-lg-12">
                                    <div  style="text-align: center;">
                    
                    
                                        {{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }}
                                        {% form_theme form _self %}
                                        {% block _username_widget %}
                                            <div class="form_row">
                                                {{ form_label(form.username) }}
                                                {{ form_errors(form.username) }}
                                                <input type="text" class="field_login" id="{{ form.username.vars.id }}" name="{{ form.username.vars.full_name }}"
                                                       required="required" autocomplete="username"
                                                       placeholder="{{ 'security.login.username'|trans }}" />
                                            </div>
                                        {% endblock  _username_widget %}
                    
                                        <div style="margin:15px;">
                    
                    {#
                                            {{ form_widget(form.username, {'attr': {'class': 'field_login','placeholder' : 'form.username'|trans }}) }}
                    #}
                                        </div>
                                        <div style="margin:15px;">
                    
                                        {{ form_widget(form.email, {'attr': {'class': 'field_login','placeholder' : 'form.email'|trans }}) }}
                                        </div>
                    
                                        <div style="margin:15px;">
                                        {{ form_widget(form.plainPassword.first, {'attr': {'class': 'field_login','placeholder' : 'form.password'|trans}}) }}
                                        </div>
                                        <div style="margin:15px;">
                                        {{ form_widget(form.plainPassword.second, {'attr': {'class': 'field_login','placeholder' : 'form.password_confirmation'|trans}}) }}
                                        </div>
                                        <div style="margin:15px;">
                                            <input type="submit" class="button_login" id="_submit" name="_submit"
                                                   value="{{ 'registration.submit'|trans }}" />
                    
                                        </div>
                                        {{ form_widget(form) }}
                    
                                        {{ form_end(form) }}
                                    </div>
                    
                                </div>



                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      7 avril 2020 à 23:42:59

                      Tu mélanges row et widget. Lis la documentation dont j'ai posté le lien.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 avril 2020 à 21:59:19

                        Oui en effet en fait mais c'était mon nom qui n'était pas le bon

                        J'appelais _username_widget

                        au lieu de _fos_user_registration_form_username_widget

                        Ça marche maintenant

                        Merci

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Modification du formulaire register FOSUserBundle

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown