不在路由上使用区域设置作为参数

时间:2017-12-20 09:38:12

标签: symfony routing symfony-2.1

我的路线有问题,当我尝试访问主页时,收到错误:

  

"未找到" GET /"

的路线

我的配置文件(app / config / config.yml):

parameters:
locale: en

framework:
#esi: ~
translator: { fallbacks: ['%locale%'] }
router:
    resource: '%kernel.project_dir%/app/config/routing.yml'
    strict_requirements: ~
default_locale: '%locale%'

我的路线档案(app / config / routing.yml)

web_client:
resource: "@DesktopBundle/Resources/config/routing_web.yml"
prefix: /{_locale}
defaults: { _locale: en}
requirements:
    _locale: en|fr

我的路由第二个文件(src / Resources / config / routing_web.yml)

home_page:
path: /
defaults: { _controller: DesktopBundle:Website/HomePage:homePage}

我的行动:

public function homePageAction(Request $request)
{
    return $this->render('DesktopBundle:Web:layout.html.twig', array());
}

当我尝试访问基本网址时出现404错误。

1 个答案:

答案 0 :(得分:1)

当然你会有一个404错误,AFAIU你的路线前面加上 _locale ,然后用 home_page 数据读取你的资源文件,所以路线会像这样:

example.com/en / < - 然后您将获得您的主页,因为它与您的前缀(/ {_ locale} /)和主页路径(/)匹配

要在进入example.com后获取homePageAction,您需要在web.client上方的routing.yml中移动主页路由。

修改 重定向阅读此https://github.com/PhilipGarnero/django-rest-framework-social-oauth2 你需要这样的东西:

home_page:
    pattern: /
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /en
        permanent: true

web_client:
    resource: "@DesktopBundle/Resources/config/routing_web.yml"
    prefix: /{_locale}
    defaults: { _locale: en}
    requirements:
        _locale: en|fr