如果我想这样做,那么每个url调用除了我在 /ExplicitControllerName/ExplicitActionToRun 之后定义的那些之后调用...路由看起来怎么样 .
例如一些伪代码:
default_pathing:
pattern: /{controller}/{action}
defaults: { _controller: Bundle:Default:index }
所以,如果我去 www.example.com/Page/About
它会打电话给我的控制器
class Page extends Controller
{
public AboutAction()
{
// Called by above URL
}
}
这个问题没有回答:Symfony2 / routing / use parameters as Controller or Action name
想象一下,我有100个页面,每次都有很多子路由页面做了几乎相同的路由 . 我想为所有这100个控制器做1路由 . 我们怎么做?
P.S我真的想要像C#.NET MVC 4.0路由这样的东西,它允许你设置一个典型设置的路由,即使它至少用于开发
2 回答
你的问题并不完全清楚,但这里有一些提示 .
我可以想象你想要解决的两个用例:
1)你有很多种类的CMS页面,就像你的例子一样,这些页面没有太多的逻辑,只是呈现一些视图,在这种情况下,你会这样:
和相应的路由配置:
2)您有更复杂的需求,和/或遵循特定模式来命名控制器/操作,因此您需要编写自定义UrlMatcherInterface实现 . 看看native implementation知道从哪里开始 . 它允许您定义回退 .
这可以使用SensioFrameworkExtraBundle的@Route注释在类和方法级别过度实现...
...使用带有隐式资源名称的FOSRestBundle的automatic route generation,使用更少的注释更优雅或更优雅 . 也许你'll need to correct some of the generated routes using some of FOSRestBundle' s manual route definition annotations .
这两种方法最初仍然需要明确地将路由资源添加到
app/config/routing.yml
.@Route的示例导入
FOSRestBundle的示例导入
您可以通过以下方式导入所有资源:
介绍custom annotation( class )
创建compiler pass或custom route loader,其中...
使用Finder查找具有该批注的所有包中的所有控制器类
最后将所有这些作为带有类型注释/ rest的资源添加到那里的路由集合中
如果您不打算使用数百个控制器并且没有太多编译器传递,自定义注释等方面的经验,那么只需在路由配置中注册资源就可以更快 .