如果我想这样做,那么每个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路由这样的东西,它允许你设置一个典型设置的路由,即使它至少用于开发
最佳答案 你的问题并不完全清楚,但这里有一些提示.
我可以想象你想要解决的两个用例:
1)你有很多种类的CMS页面,就像你的例子一样,这些页面没有太多的逻辑,只是呈现一些视图,在这种情况下,你会这样:
class CMSPageController
{
public function renderPage($pageSlug)
{
$page = $this->cmsPageRepository->findBySlug($pageSlug);
// your logic to render the view
}
}
和相应的路由配置:
<route id="cms_page_view" pattern="/cms/{pageSlug}">
<default key="_controller">cms_page.controller.page:renderPage</default>
<requirement key="_method">GET</requirement>
<requirement key="slug">[0-9a-zA-Z\-\.\/]+</requirement>
</route>
2)您有更复杂的需求,和/或遵循特定模式来命名您的控制器/操作,因此您需要编写自定义UrlMatcherInterface
实现.看看native implementation,知道从哪里开始.它允许您定义回退.