我似乎遇到了我以前从未见过的 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
。
此设置与在我的应用程序中使用参数的其余路由完全相同。
控制器中的操作肯定会返回一个响应对象。如果我将 adie('test');
放在操作的顶部并从 URL 中删除参数,我会到达 die 语句并看到“测试”,但是如果我将参数添加到 URL 会显示错误,因此它显然没有到达我的控制器或包含参数时的操作,但据我所知,路由设置正确,并且我没有得到正常的路由未定义错误,我希望看看 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'
));
}
谁能阐明我可能做错了什么?