Symfony 2.8中的通用路由-为什么带有斜杠的“空”页面不匹配?

时间:2018-11-27 10:03:58

标签: symfony routing

我正在使用Symfony 2.8并配置了通用路由:

// routes.xml
<route id="info_page" path="/info/{page}" methods="GET">
    <default key="_controller">MyBundle:Info:showPage</default>
    <default key="page">overview</default>
</route>

// Controller
public function showPageAction(Request $request, $page) {
    switch ($page) {
        case "page1":
            $template = "page1.html.twig";
            break;

        ...

        default: 
            $template = "overview.html.twig";
            break; 
    }

    $response = $this->render($template, $variables);
    return $response;
}

这对于/info/page1/info/pageN/info/overview等各种路由都适用,并且/info显示为默认/概述页面(如预期)。

但是,使用/info/(斜线)会导致错误404。为什么?为什么/info不能工作而/info/不能工作?

1 个答案:

答案 0 :(得分:0)

据我所知,Symfony会编译到正则表达式的路由,因此/info/(.*)将不匹配/info/并将抛出错误404。

我很困惑/info如何为您工作,我想您可能已经在其他地方定义了该路由。

Offtopic,尽管/info//info通常在Internet上可互换使用,但它们是不同路线,而Symfony则将它们视为这样。

直到更新版本的Symfony(4.1)才可以使用这两个变体-阅读here