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 :

[Twig][Form] form_widget [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 11
    Points
    11
    Par défaut [Twig][Form] form_widget
    Bonjour a tous,

    je suis débutant dans symfony et j'ai un petit soucis au niveau de l'affichage d'un formulaire. J'explique mon problème, je voudrais créer, par l'intermédiaire de symfony 2.1, un formulaire contenu dans un tableau afin que des Agents puissent renseigner le nombre d'heures supplémentaires qu'ils ont effectué dans le mois.

    D'après ce que j'ai compris, il faut donc que j'affiche mon formulaire ligne par ligne pour pouvoir bien positionner mes <div> ou mes <tr> et ainsi obtenir l'affichage voulu.

    Voici le code que j'ai jusqu'à présent :

    Code de la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <form action="#" method="post" {{ form_enctype(form) }} >
            {{ form_errors(form) }}
     
                    {{ form_row(form.nomAgent) }}
                    {{ form_label(form.nomAgent) }} {#afficher le label du champ nomAgent #}
                    {{ form_widget(form.nomAgent) }} {# afficher le champ #}
     
     
            </br>
            <input type="submit" value="Envoyer" />
            </form>
    Code du Formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     class FormulaireType extends AbstractType
    {
     
         public function buildForm(FormBuilderInterface $builder, array $options)
         {
     
            $builder->add('nomAgent', 'text', array('label' => 'Nom de l\'agent :'));
    }
    Code du contrôleur :

    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
    33
    34
    35
    36
    class FormulaireController extends Controller
    {
        /**
         * @Route("/",  name="formulaire")
         * @Template()
         */
        public function indexAction()
        {
            $mois= date("n");
            $year = date("Y");
            $num = cal_days_in_month(CAL_GREGORIAN, $mois, $year); //Pour que la vue connaisse la date courante
            $agent = new Agent();
            $form = $this->get('form.factory')->create(new FormulaireType(), $agent);
            $em = $this->getDoctrine()->getEntityManager();
            $request = $this->get('request');
            if ($request->isMethod('POST')) {
     
                    $form->bind($request);
                    $filiere = new Filiere(); // On creer un objet filiere avant de creer lagent (pour la clétrangere)
                    $filiere->setLibellefiliere('Test');
                    $em->persist($filiere);  // On insert la filiere dans la base pour pouvoir inserer lagent( idFiliere)
                    $em->flush();
                    $agent->setIdfiliere($filiere);
     
     
                    $em->persist($agent);
                    $em->flush();
                    return $this->redirect($this->generateUrl('confirmForm'));
    }
     
          return $this->render('CcovariablePayeBundle:Formulaire:index.html.twig', array(
          'form' => $form->CreateView(), 'tst' => $num));
     
     
     
        }
    Mon problème, c'est que lors de l'affichage (dans la vue), il n'y a que le label du champ "nomAgent" qui s'affiche, je n'arrive pas à afficher le champ correspondant, pour pouvoir renseigner ce nom d'agent. Il me semble que c'est form_widget qui gère cela mais je n'en suis pas sur...

    Merci d'avance pour votre aide, et en espérant que le problème sera résolu, déjà plusieurs jours que je suis dessus...Merci !

  2. #2
    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
    Bonjour,
    je ne sais pas précisement pourquoi seul le label s'affiche, néammoins quelques précisions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        {{ form_errors(form) }}
     
        {{ form_row(form.nomAgent) }}{#affiche le label , le widget et les erreurs liés au champs#}
        {{ form_label(form.nomAgent) }} {#afficher le label du champ nomAgent #}
        {{ form_widget(form.nomAgent) }} {# afficher le widget (l'input) SI il n'a pas encore été affiché , en l'occurence ici il ne devrait pas apparaitre #}
         {{form_errors(form.nomAgent)}}{#affiche les erreurs lié au champ "nomAgent"#}
     
        {{form_rest(form)}}{# affiche l'ensemble des champs qui n'ont pas encore été affiché, généralement le champ hidden "jeton de sécurité"#}
    regarde déjà ce que donne un form_rest(form) puis passe le form_widget(form.nomAgent) en première position

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Je viens de mettre simplement ceci dans la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <form action="#" method="post" {{ form_enctype(form) }} >
            {{ form_errors(form) }}
     
            {{ form_label(form.nomAgent) }}
            {{ form_widget(form.nomAgent) }}
    et la, ça marche !!

    Je ne comprend absolument pas pourquoi ... Le form_raw qui était au dessus était aussi pour les tests, est-ce possible qu'il "gênait" l'affichage du widget ..?

    [EDIT]
    J'ai compris, j'avais mal lu ta réponse. C'est bien ça, quand j'apeller le form_row, j'afficher déja le widget, du coup, form_widget ne pouvait le réafficher ...--' . Merci beaucoup !! (Sujet clos)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2013, 03h39
  2. [2.x] [Form][Twig] selectedchoice
    Par ldayot dans le forum Symfony
    Réponses: 0
    Dernier message: 30/12/2012, 17h02
  3. Réponses: 11
    Dernier message: 28/06/2012, 11h23
  4. [2.x] Twig et form_widget : attr conditionnel
    Par clisson dans le forum Symfony
    Réponses: 2
    Dernier message: 28/03/2012, 08h03
  5. [2.x] [Twig] Form Theming with variables
    Par rica1503 dans le forum Symfony
    Réponses: 7
    Dernier message: 16/11/2011, 09h56

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