2016-07-07 3 views
1

Ich schreibe einen Symfony2-Controller. Mein Controller löscht einen Benutzer und zeigt dann eine Erfolgs- oder Fehlernachricht an. Das funktioniert und die Antwort sieht so aus:Wie bündle ich eine Redirect- und Render-Antwort in Symfony2 zusammen?

return $app['twig']->render('index.twig', array('list' => $list,'msg' => $msg)); 

Es gibt ein Problem. Die Website landet auf index/{username}/. Ich möchte, dass die Website stattdessen auf index/ landet und die Nachricht dort anzeigt. Ich bin mit der folgenden Antwort umleiten kann:

return new RedirectResponse('/index/users/'); 

Die Frage ist, wie kann ich zusammen beiden Antworten bündeln, so dass ich umleiten zu index/ und die Nachricht auch dort angezeigt werden?

+0

Wenn Sie Anmerkungen, Vorlagen und Konfiguration/Routen verwenden, müssen Sie nicht alle zusätzlichen Codezeilen ausführen. Überprüfen Sie hier http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html –

Antwort

1

Sie können nicht bündeln zwei unterschiedliche Antworten zusammen ... Die Steuerung muss ein Response-Objekt von einer Art zurückkehren ... und nur ein ...

Sie beste Lösung wäre, die Vorteile von Flash-Mitteilungen zu nehmen .. Sie können Ihre Nachricht in der flashbag (die im Grunde die Sitzung ist) speichern und sie dann auf dem "Index" anzeigen, nachdem Sie umgeleitet wurden ... sie werden Flash genannt, weil sie nach dem ersten Lesen verschwinden ....

können Sie auch die forward Anfrage an einen anderen Controller intern senden, ohne tatsächlich eine 301 an den Browser zu senden .. ... das könnte eine andere Lösung sein, mit der Sie herumspielen können ...

Verwandte Themen