Symfony重定向搜索路由如果找不到路由

时间:2016-03-08 13:46:42

标签: php symfony

我希望用户能够使用/{keyword}作为/search/{keyword}的快捷方式(理想情况下,只有当keyword不包含句号或斜杠时才会使用{...}}加载页面的明显尝试。)

我有一个custom 404 page但是,由于这条路线没有控制器,我不知道如何在不使用JavaScript客户端的情况下重定向到搜索路线。 error404.html.twig这是非常糟糕的做法。

我能想到的唯一其他解决方案是使用/{keyword}路由,以某种方式对此进行优先排序,如果存在路径/$keyword的路由,则加载该路由,否则重定向到{{1但是我无法看到如何确定这条路线的优先顺序,或者如何通过路径检查路线是否存在(我只能按名称查看)。

有人能想到解决方案吗?

1 个答案:

答案 0 :(得分:3)

您需要为此路线设置最低优先级。

的routing.yml:

foo:
   path: /foo
   #foo route config

bar:
   path: /bar
   #bar route config       

#other routes
#...

search_alias:
   path: /{keyword}
   defaults: { _controller: MyBundle:Redirect:searchKeyword }
   requirements:
       keyword: ^([a-zA_Z0-9\s]+)$
   methods: [GET]

search_alias只有在上面的路线不匹配时才会被调用。