Bonjour,
j'ai pas mal avancé avec mon appli d'apprentissage. Voici les difficultées que je rencontre pour le moment

j'ai mon DefaultController

<?php

namespace App\EleveBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use App\EleveBundle\Entity\Score;

class DefaultController extends Controller
{
    public function accueilAction()
    {
        return $this->render('AppEleveBundle:Default:accueil.html.twig');
    }

    public function indexAction()
    {
        $em = $this->getDoctrine()->getManager();
        $user = $this->getUser();
        $affiliation=$user->GetAffiliation();
        $evaluations = $em->getRepository('AppProfBundle:Evaluation')->findBy(
            array('user' =>$affiliation));
        $scores = $em->getRepository('AppEleveBundle:Score')->findAll();

        return $this->render('AppEleveBundle:Default:index.html.twig', array(
            'evaluations' => $evaluations,
            'scores' => $scores
        ));
    }
    public function pageAction($id, Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $user = $this->getUser();
        $affiliation=$user->getAffiliation();
        $evaluations = $em->getRepository('AppProfBundle:Evaluation')->findBy(
            array('user' =>$affiliation));
        $score = new Score();

        $form = $this->createForm('App\EleveBundle\Form\ScoreType', $score);
        $form->handleRequest($request);

        return $this->render('AppEleveBundle:Default:jungle.html.twig', array(
            'score' => $score,
            'form' => $form->createView(),
            'evaluations' => $evaluations,
            'id'=>$id
        ));
    }
    public function scoreAction($idev, $idcom, Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $user = $this->getUser();
        $affiliation = $user->getAffiliation();
        $evaluation = $em->getRepository('AppProfBundle:Evaluation')->find($idev);
        $competence = $em->getRepository('AppProfBundle:Competence')->find($idcom);
        $evaluations = $em->getRepository('AppProfBundle:Evaluation')->findBy(
            array('user' => $affiliation));
        $scores = $em->getRepository('AppEleveBundle:Score')->findAll();
        $score = new Score();
        $user = $this->getUser();
        $score->setUser($user);
        $score->setDate(new \DateTime());
        $score->setEvaluation($evaluation);
        $score->setCompetence($competence);

        $form = $this->createForm('App\EleveBundle\Form\ScoreType', $score);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($score);
            $em->flush();
            return $this->redirectToRoute('app_eleve_page', array(
                'id' => $idev));
        }

        return $this->render('AppEleveBundle:Default:jungle.html.twig', array(
            'score' => $score,
            'form' => $form->createView(),
            'evaluations' => $evaluations,
            'scores' => $scores,
            'id' => $idev
        ));

    }
    public function resultAction()
    {
        $em = $this->getDoctrine()->getManager();
        $user = $this->getUser();
        $scores = $em->getRepository('AppEleveBundle:Score')->findBy(
            array('user' =>$user));

        return $this->render('AppEleveBundle:Default:result.html.twig', array(
            'scores' => $scores,
        ));
    }

}

l'action index recupère la liste des évaluations d'un utilisateur et affiche grace à la vue

{% for evaluation in evaluations %}
            {% if "now"|date('Ymd')  < evaluation.dateend|date('Ymd') %}
                <div class="choix choix-evaluation">
                    <a href="{{ path('app_eleve_page', { id : evaluation.id })}}">
                        <p>{{ evaluation.nom }}</p>
                        <span>Je m'évalue</span>
                    </a>
                </div>
            {% endif %}
        {% endfor %}

Dans la vue précende, je recupère l'iD de l'évaluation et je passe au lien.
L'action page recupère toutes les compétences pour une evalution donnée, créé un formulaire / compétence et affiche avec la vue

 {% for evaluation in evaluations %}
                {% for competence in evaluation.competences %}
                    {% if evaluation.id == id %}
                        {{ form_start(form, {"action":path('app_score_page', { 'idev' : id, 'idcom':competence.id })}) }}
                                    <div class="evaluation">
                                    <div class="bar bar-2">
                                        <h4>{{ competence }} </h4>
                                                                  {{ form_widget (form.score, {'attr':{'class':'val-input input-2 '}} ) }}
                                        </div>
                                        <input type="submit" value="Valider" class="button-submit">
                                        <hr class="clear">
                                    </div>
                                    </div>
                         {{ form_end(form) }}
                {% endif %}
                {% endfor %}
                {% endfor %}

finalement, pour le traitement du formulaire, j'ai récupère l'ID de l'évaluation et l'Id de la compétence dans la vue précédente
{{ form_start(form, {"action":path('app_score_page', { 'idev' : id, 'idcom':competence.id })}) }}
L'action score action me permet dont de traiter mon formualire. ayant les id de compétence et evaluation, j'ai utiliser

        $evaluation = $em->getRepository('AppProfBundle:Evaluation')->find($idev);
        $competence = $em->getRepository('AppProfBundle:Competence')->find($idcom);

pour récuper l'évaluation et la compétence et ensuite je peux SetUser, SetDate, SetEvaluation et SetCompetence automatiquement. la seule valeur entrée par l'utilisateur est le score. le code coplet est dans le controller du départ

        $score->setUser($user);
        $score->setDate(new \DateTime());
        $score->setEvaluation($evaluation);
        $score->setCompetence($competence);

tout marche bien lorsque l'eleve valide la première competence pour chaque évaluation mais lorsqu'il valide la seconde ou les autres competence , le score entré n'est pas pris en compte. QUelqu'un peut-il m'aider? si vous avez des questionss, je suis dispo

Aucune réponse