Übergeben von Objekten über Controller in symfony2

Ich bin sehr verwirrt..
Ich bin mit Symfony2.3.

Ich habe einen controller, der vorne auf einem separaten controller, wenn ein Formular abgeschickt wird.

   if ($form->isValid()) {
         $response = $this->forward('MusicMBundle:Song:addTrackToSong', array(
            'Track'=>$Track,
            ));
         return $response;
   }

Jedoch, wie gesehen werden kann, wird die Track-parameter übergeben wird, über diesen nach vorne, um die folgende (vereinfachte) Steuerung, mit einer anderen form.

    public function addTrackToSongAction(Request $request, $Track){
          if ($form->isValid()) {   
                //LOGIC
                return $this->redirect($this->generateUrl('MusicMBundle_homepage'));
          }
          return $this->render('MusicMBundle:Song:addtracktosong.html.twig', array(
               'Track' => $Track, 'form' => $form->createView(),
          ));

Wenn ich var_dump($Track) überall in der Funktion, es existiert und ist genau das, was ich will, es zu sein.

Jedoch, wenn das zweite Formular abgeschickt wird, symfony2 wirft die folgende Fehlermeldung:

Controller "Music\MBundle\Controller\SongController::addTrackToSongAction()" requires 
that you provide a value for the "$Track" argument (because there is no default value 
or because there is a non optional argument after this one).

Ganz ehrlich gesagt, ich bin verwirrt. Ich habe Zugriff auf alles, was ich brauche, aber symfony ist immer sehr wütend auf mich. Das problem könnte sein, in meinem forwarding-Strategie nehme ich an?

Hier ist mein routing-Datei, wenn das problem könnte es sein:

MusicMBundle_Song_addTrackToSong:
pattern: /addTrackToSong
defaults: { _controller: MusicMBundle:Song:addTrackToSong }
requirements:
   _method: GET|POST

Ich bin ein Anfänger mit dem framework und ich weiß nur nicht, wo Sie anfangen und kann nicht finden, alles auf ihn.

Ob ich noch andere info lassen Sie mich wissen.

Vielen Dank!

  • haben Sie versucht, entfernen Sie die Request-parameter und verwenden Sie $this->getRequest() statt
  • Entweder Sie zeigen auf den falschen Weg (weitergeleitet route) oder $Track sollte null sein public function addTrackToSongAction(Request $request, $Track = null) aber ich Stimme für das erste.
InformationsquelleAutor user2580051 | 2013-07-13
Schreibe einen Kommentar