php – 为symfony 2中的控制器/操作定义默认路由

如果我想这样做,那么每个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,知道从哪里开始.它允许您定义回退.

点赞