我有slug标识的实体Page
。此外,我还可以在页面控制器中查看页面:
/**
* @Route("/{slug}", name="app.page", requirements={"slug": "[\w-]+"})
* @ParamConverter("page", class="AppBundle:Page", options={"slug" = "slug"})
* @param Request $request
* @param Page $page
* @return \Symfony\Component\HttpFoundation\Response
*/
public function showAction(Request $request, Page $page)
{
// replace this example code with whatever you need
return $this->render('Page/view.html.twig', array(
'page' => $page,
));
}
我正在尝试从数据库中获取页面,这很有效。但是我有一个问题,所有现有的路由(例如:/ login)都被这个动作覆盖,所以我没有查看登录表单而是404,因为我没有在数据库中登录slug的页面。
如果没有定义匹配的路由,如何强制Symfony使用此路由?
答案 0 :(得分:3)
在主路由文件中(位于配置文件夹中) - 只需更改捆绑引用的顺序即可。 首先匹配的路由是路由器将使用的路由,因此可以更改它们被检查的顺序。
只需将PageController包放在最底层即可。
如果同一捆绑包中有多个控制器,您也可以在路由文件中单独引用控制器
答案 1 :(得分:1)
是或者你可以使用URL的前缀看起来也不一样
例如:
/page/{url}
或/user/login
最好是选择路线声明的顺序。但是,如果你的网址是相同的话,有时会引起一些麻烦......