如何定义可选占位符

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何定义可选占位符

为了让事情变得更令人兴奋,添加一个新的路由,显示这个假想的博客应用程序的所有可用博客文章的列表:

  • 注释
  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src / AppBundle /控制器/ BlogController.php/ /……BlogController扩展控制器/ /……/ * * *@Route(" /博客”)* /公共函数indexAction()/ /……}}

到目前为止,这个路由尽可能简单——它不包含占位符,只匹配准确的URL/博客.但是,如果您需要这个路由来支持分页,那么/博客/ 2显示博客条目的第二页?更新路由以拥有一个新的{页面}占位符:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
/ / src / AppBundle /控制器/ BlogController.php/ /……/ * * *@Route(“/博客/{页面}”)* /公共函数indexAction页面/ /……

就像{蛞蝓}占位符前,值匹配{页面}将在你的控制器内可用。它的值可用于确定为给定页面显示哪一组博客文章。

但是等一下!由于默认情况下需要占位符,因此此路由将不再简单地匹配/博客.相反,要查看博客的第1页,您需要使用URL/博客/ 1!由于这不是富web应用程序的行为方式,修改路由以使{页面}可选参数。可以通过将其包含在违约集合:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
/ / src / AppBundle /控制器/ BlogController.php/ /……/ * * *@Route("/blog/{page}", defaults={"page"=1}) */公共函数indexAction页面/ /……

通过添加页面违约的关键,{页面}不再需要占位符。URL/博客将匹配此路由和的值页面参数将设置为1.URL/博客/ 2会不会也相配,给了呢页面参数a值为2.完美的。

URL 路线 参数
/博客 博客 {页面}1
/博客/ 1 博客 {页面}1
/博客/ 2 博客 {页面}2

谨慎

当然,你可以有不止一个可选的占位符(例如:页面/博客/{蛞蝓}/ {}),但是可选占位符之后的所有内容都必须是可选的。例如,/{页面}/博客是有效路径,但是页面总是需要的(即简单地/博客将不匹配此路由)。

提示

带有可选参数的路由将不会与带有斜杠的请求匹配。/博客/不会匹配,/博客将匹配)。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。