我似乎碰到过Symfony 2的一个问题,我之前没有见过(或者更多可能是我错过了一些非常明显的东西)。添加参数时Symfony 2路由错误
我有一条路线,没有参数,完美工作,连接到控制器并显示正确的视图。然后我更新的路线采取一个参数,像这样:
# Note routing
gibbo_dummy_notes_Add:
pattern: /notes/add/{notebook}
defaults: { _controller: GibboDummyBundle:Note:add, notebook: 0}
requirements:
_method: POST|GET
但是如果我现在尝试访问该航线notes/add/test
我得到的错误The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?
。如果我删除参数,它完美的作品notes/add
。
该设置与在我的应用中使用参数的其他路由完全相同。
控制器中的操作肯定会返回响应对象。如果我在操作顶部放置die('test');
,并从URL中删除参数,我会到达die语句并查看'test',但是如果我将该参数添加到URL中,它将显示错误,因此它显然没有到达控制器或行动时,包括参数,但据我可以告诉路由设置正确,并没有得到正常路由未定义的错误我期望看看是否有问题的网址。
进出口运行它的开发环境下,我已经试过其他浏览器/清除缓存等控制器NoteController看起来像
public function addAction($notebook)
{
$pageTitle = 'Note';
$form = $this->createForm(new NoteType(), null, array(
'validation_groups' => array('add')
));
$request = $this->getRequest();
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
/** @var $em \Doctrine\ORM\EntityManager */
$em = $this->getDoctrine()->getManager();
/** @var $note Note */
$note = $form->getData();
$note->setNotebook();
$em->persist($note);
$em->flush();
return $this->redirect($this->generateUrl('gibbo_dummy_note_View'));
}
}
return $this->render('GibboDummyBundle:Note:new.html.twig', array(
'pageTitle' => $pageTitle,
'form_add' => $form->createView(),
'selected' => 'codebooks'
));
}
任何人都了解什么,我可能是做错了一些轻内的行动?
我的猜测是,这对奇怪的原因,另一路由匹配。您可以在探查器中查看它与路由器匹配的路线! – 2013-04-07 02:39:36
在根目录'php app/console router:debug'中查找路由并确保它到达正确的位置 – 2013-04-07 05:19:11
感谢路由器的响应:调试显示没有任何异常:gibbo_codekeeper_notes_Add POST | GET/notes/add/{notebook } – 2013-04-07 08:28:57