首页 > 解决方案 > 如何在 Symfony 路由器中设置可选的主机参数?

问题描述

我想在 Symfony 路由器中设置可选的主机参数。我在 localhost:8000 上尝试它,如果我调用 en.localhost:8000 它可以工作,但是当我删除第一个 lang 参数时,它与路由不匹配。路由在 route.yaml 文件中定义:

blog-index:
    path:       /blog/{page}
    host:       "{lang}.localhost"
    controller: App\Controller\BlogController::index
    defaults:
        lang: 'en'
        page: 1
    requirements:
        lang: 'en|sk'
        page: '\d+'

PHP 代码如下所示:

public function index(Request $request, $lang = 'sk', $page = 1)
{
    return $this->render('blog/index.html.twig', [
        'route' => $request->attributes->get('_route'),
        'route_params' => $request->attributes->get('_route_params'),
        'page' => $page,
        'locale' => $lang,
    ]);
}

如果我运行http://localhost:8000/blog错误消息说:

找不到“GET /blog”的路线。

文档中的示例使用default所以我认为它也应该使用可选lang参数运行。我错过了什么吗?

标签: phpsymfonysymfony4router

解决方案


推荐阅读