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 :

Formulaire


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut Formulaire
    Voici mon projet,

    J'ai un site de gestion de classe qui fonctionne bien mais j'aimerais intégrer une section cahier de note pour garder des traces des résultats de mes élèves.

    Le problème que je rencontre c'est qu'il est possible de faire des entrés pour un jeunes à la fois ce qui devient un peut long. Ce que j'aimerais c'est de réussir c'est d'avoir dans la même page la liste de mes jeunes et juste à côté de leur nom une case pour entré la note obtenu pour tel ou tel évaluation.

    Je vais insérer le code déjà écrit mais je vous préviens il est très basique. Je ne voulais pas me lancer sans d'abord comprendre cette étape importante.

    Alors j'ai une classe enfant:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
     
    <?php
     
    namespace Tic\GestionBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Enfant
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Tic\GestionBundle\Entity\EnfantRepository")
     */
    class Enfant
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string
         *
         * @ORM\Column(name="nom", type="string", length=255)
         */
        private $nom;
     
        /**
         * @ORM\OneToOne(targetEntity="Resultat")
         */
        private $note;
     
     
        /**
         * Get id
         *
         * @return integer
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set nom
         *
         * @param string $nom
         * @return Enfant
         */
        public function setNom($nom)
        {
            $this->nom = $nom;
     
            return $this;
        }
     
        /**
         * Get nom
         *
         * @return string
         */
        public function getNom()
        {
            return $this->nom;
        }
     
        /**
         * Set note
         *
         * @param \Tic\GestionBundle\Entity\Resultat $note
         * @return Enfant
         */
        public function setNote(\Tic\GestionBundle\Entity\Resultat $note = null)
        {
            $this->note = $note;
     
            return $this;
        }
     
        /**
         * Get note
         *
         * @return \Tic\GestionBundle\Entity\Resultat
         */
        public function getNote()
        {
            return $this->note;
        }
    }
    par la suite un entity Resultat(très bref)
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
     
     
    <?php
     
    namespace Tic\GestionBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Resultat
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Tic\GestionBundle\Entity\ResultatRepository")
     */
    class Resultat
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string
         *
         * @ORM\Column(name="note", type="string", length=255)
         */
        private $note;
     
        /**
         * @ORM\OneToOne(targetEntity="Enfant")
         */
        private $enfant;
     
     
        /**
         * Get id
         *
         * @return integer
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set note
         *
         * @param string $note
         * @return Resultat
         */
        public function setNote($note)
        {
            $this->note = $note;
     
            return $this;
        }
     
        /**
         * Get note
         *
         * @return string
         */
        public function getNote()
        {
            return $this->note;
        }
     
        /**
         * Set enfant
         *
         * @param \Tic\GestionBundle\Entity\Enfant $enfant
         * @return Resultat
         */
        public function setEnfant(\Tic\GestionBundle\Entity\Enfant $enfant = null)
        {
            $this->enfant = $enfant;
     
            return $this;
        }
     
        /**
         * Get enfant
         *
         * @return \Tic\GestionBundle\Entity\Enfant
         */
        public function getEnfant()
        {
            return $this->enfant;
        }
    Dans mes formulaires j'ai écrit:

    Enfant
    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
     
     
    <?php
     
    namespace Tic\GestionBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class EnfantType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('nom')
                ->add('note')
            ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Tic\GestionBundle\Entity\Enfant'
            ));
        }
     
        public function getName()
        {
            return 'tic_gestionbundle_enfanttype';
        }
    }
    Et dans le formulaire Resultat
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     
    <?php
     
    namespace Tic\GestionBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use Tic\GestionBundle\Entity\EnfantRepository;
    class ResultatType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
     
                    ->add('enfant', 'entity', array(
                        'class' => 'TicGestionBundle:Enfant',
                        'property' => 'nom',
                        'query_builder' => function(EnfantRepository $r) {
                            return $r->getSelectList();
                        }
                    ))
                    ->add('note')
            ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Tic\GestionBundle\Entity\Resultat'
            ));
        }
     
        public function getName()
        {
            return 'tic_gestionbundle_resultattype';
        }
    }
     
    Et dans le repository d'Enfant
    
    <?php
     
    namespace Tic\GestionBundle\Entity;
     
    use Doctrine\ORM\EntityRepository;
     
    /**
     * EnfantRepository
     *
     * This class was generated by the Doctrine ORM. Add your own custom
     * repository methods below.
     */
    class EnfantRepository extends EntityRepository
    {
         
        public function getSelectList()
      {
           
        $qb = $this->createQueryBuilder('a')
                   ->where('a.id=1'); // On filtre sur l'attribut publication
     
     
        // Et on retourne simplement le QueryBuilder, et non la Query, attention
      return $qb;
      }
    }
    J'espère avoir été clair dans mes explications alors si quelqu'un peut m'aider se serait très apprécié.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 125
    Par défaut
    Il faut que tu créés un formType spécial pour recréer un formulaire
    avec un champ collection sur ton entité. ca te permet de construire une liste de formulaire.

    et tu fais une boucle sur ta liste entités élèves/notes contenu dans ta classe. et tu le fais à la sauce d'une page d'édition.

    J'espère que ca t'aide dans l'idée du comment faire.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut Merci
    Quand je te lis ça semble facile je vais me pencher dessus mais je dois dire que j'ai toujours créer des form à partir du crud de doctrine donc si j'ai bien compris je dois faire un form contenant les élèves et les notes et par la suite dans ma vue faire une boucle for pour afficher le resultat.De cette façon je pourrais avoir un formulaire qui ressemble à ceci:
    Nom : exemple.png
Affichages : 60
Taille : 19,9 Ko

    merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 125
    Par défaut
    Oui, regarde du coté du champ collection dans ton builder de form.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut
    Salut avant de continuer je voulais savoir si ce code était Ok

    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
    <?php
     
    namespace Tic\GestionBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class ResultatType extends AbstractType {
     
        public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder->add('enfant', 'collection', array(
                'type' => new EnfantType(),
                'allow_add' => true,
                'by_reference' => false,
            ));
            $builder->add('note');
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver) {
            $resolver->setDefaults(array(
                'data_class' => 'Tic\GestionBundle\Entity\Resultat'
            ));
        }
     
        public function getName() {
            return 'tic_gestionbundle_resultattype';
        }
     
    }
    Merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 125
    Par défaut
    Salut, il faut que tu continus pour le savoir mais c'est la bonne voie

  7. #7
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut Dans mon controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     public function newAction()
        {
            $entity = new Resultat();
            $form   = $this->createForm(new ResultatType(), $entity);
     $em = $this->getDoctrine()->getManager();
     
            $entities = $em->getRepository('TicGestionBundle:Enfant')->findAll();
            return array(
                'entity' => $entity,
                'form'   => $form->createView(),
                'entities'=>$entities
            );
        }
    Dans ma vue
    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
    {% extends '::base.html.twig' %}
     
    {% block body -%}
        <h1>Resultat creation</h1>
     
     
     
        <form action="{{ path('resultat_create') }}" method="post" {{ form_enctype(form) }}>
     
     
    {{ form_label(form.enfant)}}
     
                {{ form_rest(form) }}
     
            <p>
                <button type="submit">Create</button>
            </p>
        </form>
     
            <ul class="record_actions">
        <li>
            <a href="{{ path('resultat') }}">
                Back to the list
            </a>
        </li>
    </ul>
    {% endblock %}
    Resultat le même
    soit:
    eleve 1
    input note
    eleve 2

    rien
    soumettre

Discussions similaires

  1. Création d'un formulaire sous flash?
    Par ultrakas dans le forum Flash
    Réponses: 5
    Dernier message: 11/01/2005, 18h33
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  3. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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