Общий маршрут в Symfony 2.8 - Почему «пустая» страница с косой чертой не совпадает? - PullRequest
0 голосов
/ 27 ноября 2018

Я использую 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 голосов
/ 27 ноября 2018

Насколько я знаю, Symfony компилирует маршруты в регулярные выражения, поэтому /info/(.*) не будет соответствовать /info/ и выдаст ошибку 404.

Я запутался, как работает /infoВы, я полагаю, вы могли бы определить этот маршрут в другом месте.

Оффтоп, хотя /info/ и /info обычно используются взаимозаменяемо в Интернете, это разные маршруты и Symfonyрассматривал их как таковые.

Только в более новых версиях Symfony (4.1) можно использовать эти два варианта - читайте здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...