我正在尝试通过一个小型个人项目学习symfony 4。但是我对_locale
有一些解决方法。
我有这样的索引路径:
# /config/route.yaml
index:
path: /{_locale}
controller: App\Controller\IndexController::index
requirements:
_locale: '%app.locales%'
defaults:
path: /fr
还有一个服务设置,其中包含默认语言环境和参数:
# /config/service.yaml
parameters:
locale: fr
app.locales: fr|en
,其中包含将translation.yml
设置为default_locale
的{{1}}文件。我正在尝试仅使用fr
。
fr|en
我的意思是,当我对网址# /config/package/translation.yaml
framework:
default_locale: fr
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks:
- '%locale%'
进行硬编码时,一切正常。但是,如果未在网址中设置/fr
,则不会重定向到default_locale
。在这种情况下,symfony核心探查器会抛出错误:
{_locale}
也许我不太了解,但是如果设置了No route found for "GET /%7B_locale%7D"
,它必须作为default_locale
参数的备用,不是吗?
感谢您的时间
答案 0 :(得分:0)
在您的示例中,您有一条路线/{_locale}
,并且由于{_locale}
部分的原因,必须始终在其中设置requirements
。您收到错误No route found
,因为Symfony不知道路由/
和/{_locale}
是相同的,并且{_locale}
可能为空。您必须像这样设置新路由/
并设置重定向到/fr
:
home:
path: /
controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction
defaults:
path: /fr
permanent: true
您可以在此处找到有关重定向的更多信息:https://symfony.com/doc/current/routing/redirect_in_config.html