【问题标题】:Symfony 2 route error when adding parameters添加参数时Symfony 2路由错误
【发布时间】:2013-04-06 23:59:48
【问题描述】:

我似乎遇到了我以前从未见过的 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 语句并看到“测试”,但如果我将参数添加到 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'
    ));


}

谁能解释一下我可能做错了什么?

【问题讨论】:

  • 我的猜测是它匹配另一条路线的原因很奇怪。您可以进入分析器查看它与路由器匹配的路由!
  • 在根目录php app/console router:debug 中查找路线并确保它到达正确的位置
  • 感谢路由器的响应:调试显示没有异常:gibbo_codekeeper_notes_Add POST|GET /notes/add/{notebook}
  • 哦,也没有重复项
  • 尝试将 notebook 参数默认设置为 0 以外的其他值。(例如,null)。

标签: php symfony view routing controller


【解决方案1】:

请为gibbo_dummy_note_View 路由添加控制器代码。

您的重定向很可能以错误的控制器方法结束 - 没有return 语句的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多