我很困惑..我正在运行 Symfony2.3。
如果提交表单,我有一个控制器会转发到单独的控制器。
if ($form->isValid()) {
$response = $this->forward('MusicMBundle:Song:addTrackToSong', array(
'Track'=>$Track,
));
return $response;
}
但是,可以看出,Track 参数通过这个转发传递给下面的(简化的)控制器,具有另一种形式。
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
我是该框架的初学者,我只是不知道从哪里开始,也找不到任何东西。
如果我可以提供任何其他信息,请告诉我。
非常感谢!