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 :

Grille de résultat


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Points : 27
    Points
    27
    Par défaut Grille de résultat
    Depuis un temps j'essai de trouver une réponse à un problème qui sera certainement simple à résoudre pour certain d'entre vous.

    J'ai deux table lier ensemble soit un entity resultat qui comprend une date, un titre d'évaluation et un resultat. Une autre entity eleve. j'aimerais pour afficher les nom des élèves et être capable d'écrire un resultat pour un groupe complet sur une seule page. exemple.

    Voir l'exemple(miniature)

    J'utilise les forms de symfony2.1.1
    Images attachées Images attachées  

  2. #2
    Membre régulier Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    C'est quoi ton soucis?

    Car là c'est pas très précis ton problème.
    Il y a souvent confusion entre les geeks, les nolifes, et les
    nerds.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Points : 27
    Points
    27
    Par défaut
    Je suis entrain de faire un cahier de note pour des ensseignants. Ils ont comme vous vous en doutez plusieurs élèves. Donc j'ai un Entity eleve qui comprend le nom de l'eleve(tres basique) et un Entity resultat qui comprend la date l'évaluation et le resultat. Je veux que la page de saisie des résultats ressemble à un cahier de note normal donc une colonne avec le nom des jeunes et une ou deux autres pour les résultats d'une évaluation en particulier. Mon problème c,est que je dois pour l'instant entrée une note à la fois pour un eleve donnée. Je ne comprend pas comment faire comme dans la miniature soit une page plusieurs eleves plusieurs saisies.

    Merci

  4. #4
    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,

    Il faut utiliser le type "Collection"

    En l'occurence ton formulaire comprendra un sous-formulaire Collection composé de EleveType
    et EleveType comprendra lui-même un sous-formulaire Collection composé de ResultatType

    consulte bien la doc:
    http://symfony.com/doc/current/refer...ollection.html

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Points : 27
    Points
    27
    Par défaut Merci
    Merci mais j'ai regarder la doc et je ne vois pas très bien comment m'en sortir. Je ne connais rien à JS et il me semble que pour que cela fonctionne je dois intégrer un script dans ma page mais je suis perdu.

    Merci de bien vouloir m'aider.

  6. #6
    Membre régulier Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Tu n'as pas besoin de JS.

    Il te faut 2 formulaires (je ne vois pas l'utilité du 3ème formulaire vu que tu as un nombre fixe de notes, et même ça doit pouvoir se faire avec un formulaire dynamique).
    Il te faut aussi 2 classes associées (tu remplaceras bien sur EtudiantData par ton entité associée à ta table).
    Désolé pour le mot étudiant j'ai vu qu'après que c'était enfant^^.
    Il n'y a pas beaucoup de commentaires mais d'un côté il y a assez peud e lignes de code.
    Tu trouveras plus de commentaires sur le site officiel : http://symfony.com/doc/2.0/cookbook/...llections.html

    Code EtudiantData : 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
     
    <?php
     
    namespace Projet\TonBundle\Form\Data;
     
    class EtudiantData
    {
    	protected $note1;
     
    	protected $note2;
     
    	protected $note3;
     
    	public function setNote1($note1)
        {
            $this->note1 = $note1;
     
            return $this;
        }
     
    	public function getNote1()
        {
            return $this->note1;
        }
     
    	public function setNote2($note2)
        {
            $this->note2 = $note2;
     
            return $this;
        }
     
    	public function getNote2()
        {
            return $this->note2;
        }
     
    	public function setNote3($note3)
        {
            $this->note1 = $note3;
     
            return $this;
        }
     
    	public function getNote3()
        {
            return $this->note3;
        }
    }

    Code EtudiantType : 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
     
    <?php
     
    namespace Projet\TonBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer;
     
    class EtudiantType extends AbstractType
    {
    	public function buildForm(FormBuilderInterface $builder, array $options)
    	{
    		$builder
    			->add('note1', ->add('quantity', 'integer', array('rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_CEILING, 
    				'grouping' => \NumberFormatter::GROUPING_USED))
    			->add('note2', ->add('quantity', 'integer', array('rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_CEILING, 
    				'grouping' => \NumberFormatter::GROUPING_USED))
    			->add('note3', ->add('quantity', 'integer', array('rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_CEILING, 
    				'grouping' => \NumberFormatter::GROUPING_USED));
    	}
     
    	public function getDefaultOptions(array $options)
    	{
    		return array(
    				'data_class' => 'Projet\TonBundle\Form\Data\EtudiantData',
    		);
    	}
     
    	public function getName()
    	{
    		return 'etudiant';
    	}
    }

    Code ReleveData : 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
     
    <?php
     
    namespace Projet\TonBundle\Form\Data;
     
    use Doctrine\Common\Collections\ArrayCollection;
     
    class EtudiantData
    {
    	protected $etudiants;
     
    	public function __construct()
        {
        	$this->etudiants = new ArrayCollection();
        }
     
    	public function setEtudiants(ArrayCollection $etudiants)
        {
            $this->etudiants = $etudiants;
     
            return $this;
        }
     
    	public function getEtudiants()
        {
            return $this->etudiants;
        }
    }

    Code ReleveType : 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
     
    <?php
     
    namespace Projet\TonBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use Projet\TonBundle\Form\Type\EtudiantType;
     
    class ReleveType extends AbstractType
    {
    	public function buildForm(FormBuilderInterface $builder, array $options)
    	{
    		$builder->add('etudiants', 'collection', array(
                                    'type' => new EtudiantType(),
                                    'allow_add' => false,
                                    'allow_delete' => false,
                                    'prototype' => false));
    	}
     
    	public function getDefaultOptions(array $options)
    	{
    		return array(
    				'data_class' => 'Projet\TonBundle\Form\Data\ReleveData',
    		);
    	}
     
    	public function getName()
    	{
    		return 'releve';
    	}
    }


    Code TonController : 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 Projet\TonBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Projet\TonBundle\Form\Data\ReleveData;
    use Projet\TonBundle\Form\Data\EtudiantData;
    use Projet\TonBundle\Form\Type\ReleveType;
     
    class TonController extends Controller
    {
    	function taFonction()
    	{
        	$releveData = new ReleveData();
     
    		$etudiant1 = new EtudiantData();
    		$etudiant2 = new EtudiantData();
    		$etudiant3 = new EtudiantData();
     
    		$releveData->getEtudiants()->add($etudiant1);
    		$releveData->getEtudiants()->add($etudiant2);
    		$releveData->getEtudiants()->add($etudiant3);
     
        	// Si tu as une liste d'étudiant tu peux directement la setter
        	//$releveData->setEtudiants(new ArrayCollection($etudiants));
     
        	$form = $this->createForm(new ReleveType(), $releveData);
     
        	return array('form' => $form->createView()); 
    	}
    }


    Code taFonction.html.twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    {% for index, etudiant in form.etudiants %}
    	{{ form_widget(etudiant.note1) }}
    	{{ form_widget(etudiant.note2) }}
    	{{ form_widget(etudiant.note3) }}
     
            {#accès à une donnée de l'étudiant qui n'est pas dans le form, ici son nom : #}
            {{ etudiant.vars.value.nom }}
    {% endfor %}

    En espérant t'aider =)
    J'ai fait quelque chose de similaire sous Symfony 2.1 normalement ça devrait fonctionner
    Il y a souvent confusion entre les geeks, les nolifes, et les
    nerds.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Points : 27
    Points
    27
    Par défaut merci
    j'essai dans les prochains jours et je t'en reparle

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Points : 27
    Points
    27
    Par défaut Meci mais..
    Salut merci flutz mais malheureusement je n'ai pas réussit. Je me demande si tu peux me donner plus de détails et moi je continue à lire la doc...

  9. #9
    Membre régulier Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Tu pourrais donner ton problème (ton erreur ou autre)? (je vois mal comment mettre plus de détails )
    Il y a souvent confusion entre les geeks, les nolifes, et les
    nerds.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Points : 27
    Points
    27
    Par défaut
    Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be of the type array, object given, called in C:\Zend\Apache2\htdocs\portail\src\Portail\EssaiBundle\Controller\ReleveController.php on line 77 and defined in C:\Zend\Apache2\htdocs\portail\vendor\doctrine\common\lib\Doctrine\Common\Collections\ArrayCollection.php line 48

  11. #11
    Membre habitué
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    Il faut des talents de devin pour apporter une réponse juste avec un message d'erreur. Tout ce que l'on sait, c'est qu'à la ligne 77 du contrôleur "releve", tu passes en premier argument un objet alors qu'il faudrait que cela soit un tableau (on pourrait aller un peu plus loin mais c'est déjà suffisant pour remonter à la source).

    Il faut donc essayer de comprendre ces messages d'erreur pour tenter soi-même de corriger son code; et si on y parvient pas, présenter les portions de code concernés pour recevoir de l'aide (ou être mis sur la piste, ce qui est selon moi plus intéressant pour progresser).

  12. #12
    Membre régulier Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 70
    Points
    70
    Par défaut
    Effectivement ton message d'erreur n'est pas très explicite, tu passes un objet au lieu d'une ArrayCollection.

    Si tu veux de l'aide il nous faudra le code qui pose problème.
    Il y a souvent confusion entre les geeks, les nolifes, et les
    nerds.

Discussions similaires

  1. [Toutes versions] "résultats" de la grille "Loto Foot 15 n° 33
    Par neouu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2015, 23h50
  2. [Lazarus] [Défi n° 2] Un résolveur de grilles de Sudoku : les résultats !
    Par Alcatîz dans le forum Lazarus
    Réponses: 97
    Dernier message: 02/02/2010, 13h49
  3. Grille des résultats et champs de date
    Par whorian dans le forum Outils
    Réponses: 2
    Dernier message: 21/11/2008, 10h15
  4. Réponses: 4
    Dernier message: 28/09/2002, 00h00
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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