2017-08-03 7 views
0

Ich baue ein symfony 3 Projekt und ich versuche, eine Flashbag-Nachricht in Zweig Vorlage zeigen nach dem Formular, um den Benutzer zu bemerken, dass das Formular erfolgreich eingereicht wurde, aber es funktioniert nicht für mich ! hier ist die Controller:symfony flashBag Nachricht funktioniert nicht

<?php 
namespace EvalBundle\Controller; 

use EvalBundle\Entity\SessionEvaluation; 
use EvalBundle\Form\SessionEvaluationType; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 

class EvaluationController extends Controller 
{ 
    /** 
    * @Route("/evaluation", name="evaluation_session") 
    * @Method({"GET", "POST"}) 
    */ 
    public function indexAction(Request $request) 
    { 
     $sessioneval = new SessionEvaluation(); 
     $form = $this->createForm(SessionEvaluationType::class, $sessioneval); 
     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()){ 

      $em = $this->getDoctrine()->getManager(); 
      $em->persist($sessioneval); 
      $em->flush(); 
      $this->get('session')->getFlashBag()->add('notice', 'la session est lancée avec succes'); 
      unset($entity); 

     } 
     return $this->render('@Eval/Default/Evaluation/newEvaluationSession.html.twig',array(
      'form' => $form->createView() 
     )); 


    } 
} 

und hier ist die Vorlage Zweig:

{% extends ':default:superAdminBase.html.twig' %} 

{% block menu %} 
    {% include(':default:menu.html.twig') %} 
{% endblock %} 

{% block header %} 
{% endblock %} 

{% block body %} 
    <div class="row"> 
     <div class="col-lg-12 col-md-12 col-sm-12"> 
      <h1 class="page-header"> 
       Lancer une nouvelle session d'évaluation 
      </h1> 
     </div> 
    </div> 
    {% set flashbag_notices = app.session.flashBag('notice') %} 
    {% if flashbag_notices is not empty %} 
     <div class="row"> 
      <div class="col-lg-6"> 
       <ul> 
        {% for notice in flashbag_notices %} 
         {{ dump(flashbag_notices) }} 
         <li>{{ notice }}</li> 
        {% endfor %} 
       </ul> 
      </div> 
     </div> 
    {% endif %} 

    <div class="row"> 
     <div class="col-md-12"> 
      <div class="panel panel-default"> 
       <div class="panel-heading"> 
        Session d'évaluation des Compétences 
       </div> 
       <div class="panel-body"> 
        <div class="row"> 
         <div class="container"> 
          <div class="col-lg-12 "> 
           {{ form_start(form) }} 
           {{ form_widget(form) }} 
           {{ form_end(form) }} 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
{% endblock %} 
{% block javascript %} 

{% endblock %} 

ich das doc befolgt haben, aber ich weiß nicht, dass es nicht auf meiner Seite arbeiten.

etwas Hilfe bitte! Dank

Antwort

1

Versuchen Sie, diese Zeile zu ändern:

$this->get('session')->getFlashBag()->add('notice', 'la session est lancée avec succes'); 

TO:

$request->getSession()->getFlashBag()->add('notice', 'la session est lancée avec succes'); 

Alternativ können Sie tun:

$this->addFlash(
    'notice', 
    'la session est lancée avec succes' 
); 

Und Zweig erhalten wie so:

{% set flashbag_notices = app.session.flashBag('notice') %} 

Wenn Sie 3.3 Symfony ausgeführt werden passieren, können Sie stattdessen verwenden:

{% set flashbag_notices = app.flashes('notice') %} 

sich nach den neuen Änderungen:

https://symfony.com/blog/new-in-symfony-3-3-improved-flash-messages