Php 单符号布线中的多模式
如何在单个Symfony布线中制作多个图案 通常我们有一个路由Php 单符号布线中的多模式,php,symfony,routing,Php,Symfony,Routing,如何在单个Symfony布线中制作多个图案 通常我们有一个路由 blog: pattern: / defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } 有可能有两种路由模式吗 差不多 blog: #Below pattern to match with '/' or '/index' pattern: {/ , /index} defaults: { _cont
blog:
pattern: /
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
有可能有两种路由模式吗
差不多
blog:
#Below pattern to match with '/' or '/index'
pattern: {/ , /index}
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
最简单的方法是复制块并创建两条路线
blog:
pattern: /
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
blog_index:
pattern: /index
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
因此,如果需要,您可以在路径中同时使用这两种方法
您可以看到另一篇关于如何在路由中使用正则表达式的文章。也许您可以编写一个简单的正则表达式,检查是否设置了索引
编辑:
如果您使用注释(我更喜欢),那么您可以在控制器的操作方法上编写多个路由。大概是这样的:
/**
* @Route("/");
* @Route("/home");
*/
你在用Symfony2吗?如果您正在并且可以使用注释代替yml或xml进行路由,则可以按照以下方式定义多条路由:
/**
* @Route("/");
* @Route("/home");
*/
那么你就不需要重复动作方法了。只需补充一下john的答案: 我经常在FOSJsRoutingBundle中使用它:
/**
* @Route("/", name="route_name_1", options={"expose"=true})
* @Route("/{id}", name="route_name_2", options={"expose"=true})
* @Method("GET")
* @Template()
*/
这样我有一种方法和两条路线
只需记住设置默认$id值:
public function indexAction($id = null)
{
...
}
使用YAML管线时,还可以使用表达式语法引用现有管线定义
&
指定锚点的第一次出现,*
指定要引用的锚点,是否使用不同的参数?如果是,怎么做?现在是2017年:有没有一个Symfony3的方法来处理路由。yaml?很好…在这篇文章之前不知道锚。@LeeviGraham把我也算进去:D
blog: &blog
path: /
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
blog_index:
<<: *blog
path: /index
blog_page:
<<: *blog
path: /blog
blog:
path: /
defaults: &blog_defaults
_controller: AcmeBlogBundle:Blog:index
page: 1
blog_index:
path: /index
defaults: *blog_defaults
blog_page:
path: /blog
defaults: *blog_defaults
blog:
path: /
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
blog_index:
path: /index
defaults: &blog_redirect
_controller: FrameworkBundle:Redirect:redirect
route: blog
permanent: true
blog_page:
path: /blog
defaults: *blog_redirect