2013-04-06 108 views
0

我似乎碰到过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' 
    )); 


} 

任何人都了解什么,我可能是做错了一些轻内的行动?

+2

我的猜测是,这对奇怪的原因,另一路由匹配。您可以在探查器中查看它与路由器匹配的路线! – 2013-04-07 02:39:36

+0

在根目录'php app/console router:debug'中查找路由并确保它到达正确的位置 – 2013-04-07 05:19:11

+0

感谢路由器的响应:调试显示没有任何异常:gibbo_codekeeper_notes_Add POST | GET/notes/add/{notebook } – 2013-04-07 08:28:57

回答

0

请添加gibbo_dummy_note_View路线的控制器代码。

最有可能的,你的重定向不好控制方法结束了 - 不具有return声明一个