Symfony 将可选的区域设置添加到路由
我想用可选的Symfony 将可选的区域设置添加到路由,symfony,Symfony,我想用可选的\u区域设置作为我所有URL的前缀。顺便说一句,我正在处理fr和en 关键是,当给出\u locale时,我将使用它,这要感谢Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest,如果没有,我将使用保存在数据库中的locale,这要感谢我自己的侦听器(优先级:15),它在上一个侦听器之后立即运行 到目前为止,我尝试了以下内容: app/config/routing.yml 和locale\
\u区域设置作为我所有URL的前缀。顺便说一句,我正在处理fr
和en
关键是,当给出\u locale
时,我将使用它,这要感谢Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest
,如果没有,我将使用保存在数据库中的locale,这要感谢我自己的侦听器(优先级:15),它在上一个侦听器之后立即运行
到目前为止,我尝试了以下内容:
app/config/routing.yml
和locale\u prefixed\u routing.yml
导入捆绑包路由
/fr/url/example
有效,但/url/example
无效,返回404页
如何告诉symfony使用url中的区域设置,如果不存在,则使用数据库中的区域设置?对于我来说,在用户未提供区域设置的情况下,将区域设置存储在数据库中听起来很奇怪。您只需添加一个默认值:
framework:
default_locale: en
对我来说,当用户不提供语言环境时,在数据库中存储语言环境听起来很奇怪。您只需添加一个默认值:
framework:
default_locale: en
我想您的路由在区域设置中是这样定义的\u前缀\u routing.yml:
my_route:
path: /
defaults:
实际上,没有任何区域设置的路由(如/url/example
)不会在路由中定义,因为您要求在locale\u prefixed\u routing.yml中加载的所有路由前面加上区域设置前缀。因此,在没有区域设置的情况下请求这样的路由时,出现错误是正常的
您可以尝试创建另一个名为非本地化路由.yml的路由文件,该文件包含相同的路由,但您将使用特定的默认值
例如:
route_example:
path: /url/example
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /{_locale}/url/example
permanent: true
告诉我它是否允许您解决问题,我还没有测试它。我想您的路由在您的区域设置\u前缀\u路由中是这样定义的。yml:
my_route:
path: /
defaults:
实际上,没有任何区域设置的路由(如/url/example
)不会在路由中定义,因为您要求在locale\u prefixed\u routing.yml中加载的所有路由前面加上区域设置前缀。因此,在没有区域设置的情况下请求这样的路由时,出现错误是正常的
您可以尝试创建另一个名为非本地化路由.yml的路由文件,该文件包含相同的路由,但您将使用特定的默认值
例如:
route_example:
path: /url/example
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /{_locale}/url/example
permanent: true
告诉我它是否允许您解决问题,我还没有测试它。该问题与默认语言环境无关。这是一个路由定义问题,没有定义区域设置的路由。他必须对其进行定义,以指定使用区域设置的默认路线。此问题与默认区域设置无关。这是一个路由定义问题,没有定义区域设置的路由。他必须对它们进行定义,以指定要使用的默认路由和区域设置。