IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Afficher la valeur du widget mais sans le widget [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut Afficher la valeur du widget mais sans le widget
    Bonjour,

    Dans un form j'ai 2 champs :
    - file_select: type checkbox
    - name: type text

    Je veux afficher mon form avec la checkbox évidemment, mais le champ name, je ne veux pas l'afficher dans une balise input, mais je veux afficher uniquement le texte qu'il contient
    Du coup je fais {{ monform.name.vars.value }} et ça marche sauf qu'il me génère quand même en plus un champ input à la fin de mon formulaire avec la fonction form_end()
    Comment faire ?
    Merci.
    Jérôme

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    C'est du au fait que ton form_end(form) t'affiche tous les champs de ton form que tu n'as pas affiché manuellement.

    Tu peux mettre le type de ton name non pas à 'text' mais à 'hidden'. Ainsi la valeur est toujours accessible pour ton {{ monform.name.vars.value }} mais ne sera plus visible.

    En espérant que ça t'aide

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Merci Blety, mais j'ai déjà testé et ça ne marche pas...
    En fait ce que je n'ai pas dit c'est que mon formulaire est dans une collection
    J'ai un formulaire "Project" qui contient une collection de "Files" qui lui même est composé de 1 checkbox et 1 name.
    Du coup si je mets mon champ name en hidden en effet je ne le vois plus, mais le form_end m'affiche les indices de mes Files : 0, 1, 2...
    Ca doit pourtant être possible d'afficher le contenu d'un widget sans afficher le widget ?
    Merci.
    Jérôme

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Dans un projet très similaire, j'ai fais ainsi : le form du projet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class ProjectFormType extends AbstractType {
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder
                    ->add('file', 'collection', array('type' => new FileForm(),
                        'label' => ' ',
                    ))
                    ->add('download', 'submit', array('label' => 'Download selected files'
                    ))
                    ->getForm();
        }
    Le form pour les fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class FileForm extends AbstractType {
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options) {
     
            $builder
                    ->add('name', 'text', array('disabled' => true,
                    ))
                    ->add('selected_file', 'checkbox', array('required' => false,
                        'mapped' => false,
                        'label' => ' '
            ));
        }
    Et l'intégration dans le twig (avec bootstrap, sous la forme d'un tableau):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
     
    {% block body %}
    {{ form_start(form)}}
    <div id="tab_file_client">
        <table class="table-bordered table-condensed" name="project_files">
            <thead>
                <tr>
                    <th>Select</th>
                    <th>File</th>
                    <th> </th>
                </tr>
            </thead>
            <tbody>
                <tr>
            {% if form.file %}
            {% for fichier in form.file %}
     
                    <td>{{form_widget(fichier.selected_file)}}</td>
                    <td>{{form_widget(fichier.name)}}</td>
                    <td><a href="{{path('user_file_download',{'id':form.vars.value.file[loop.index0].id})}}">Download File</a>
        {% endfor %}
     
        {% endif %}
                </tr>
            </tbody>
        </table>
       {{form_widget(form.download)}}
    </div>
    {{ form_end(form)}}
    {% endblock %}
    fichier est une entité File, et selected_file la checkbox à afficher.
    J'espère que ça t'aidera.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Si tu ne souhaite pas éditer le champ "name" pourquoi l'ajouter au formulaire?

    Tu peux récupérer ton entité Fichier au niveau de twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {%for field in form.fichiers%}
      {{ field.vars.value.name }} {# field.vars.value = entité fichier #}
      {{form_widget(field.file_select)}}
    {%endfor%}

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Merci Arno
    Je vais regarder ça...
    Jérôme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] afficher valeur de champs mais pas id
    Par python38 dans le forum Débuter
    Réponses: 6
    Dernier message: 24/12/2010, 17h13
  2. Réponses: 9
    Dernier message: 27/01/2010, 09h54
  3. [Vxi3] Tri sur valeur décroissante mais sans les 'vides' en tête.
    Par tpeluchon dans le forum Deski
    Réponses: 4
    Dernier message: 07/12/2009, 11h50
  4. Réponses: 10
    Dernier message: 06/01/2009, 12h04
  5. Passer des valeurs dans mon actionform sans les afficher
    Par tonito53 dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/01/2007, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo