Я очень озадачен. Я бегу Symfony2.3.Передача объектов через контроллеры в symfony2
У меня есть контроллер, который отправляет отдельный контроллер, если форма отправлена.
if ($form->isValid()) {
$response = $this->forward('MusicMBundle:Song:addTrackToSong', array(
'Track'=>$Track,
));
return $response;
}
Однако, как можно видеть, параметр трека проходит через эти вперед к следующему (упрощенному) контроллеру, с другой формой.
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(),
));
Если я var_dump ($ Track) в любом месте функции, она существует, и именно то, что я хочу, чтобы это было.
Однако, когда вторая форма была отправлена, Symfony2 выдает следующее сообщение об ошибке:
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).
Довольно откровенно я озадачен. У меня есть доступ ко всему, что мне нужно, но symfony очень злится на меня. Думаю, проблема в моей стратегии переадресации?
Вот мой файл маршрутизации, если проблема может быть там:
MusicMBundle_Song_addTrackToSong:
pattern: /addTrackToSong
defaults: { _controller: MusicMBundle:Song:addTrackToSong }
requirements:
_method: GET|POST
Я новичок в рамках, и я просто не знаю, с чего начать и не может найти что-нибудь на нем.
Если я могу предоставить любую другую информацию, дайте мне знать.
Большое спасибо!
вы пытаетесь удалить параметр запроса и использовать '$ this-> GetRequest()' вместо –
Либо вы указываете на неверный маршрут (переадресованный маршрут), либо на $ Track должен быть nullable 'public function addTrackToSongAction (Request $ request, $ Track = null)', но я проголосую за первый. –