【问题标题】:Symfony2, autoredirect if all parameters are default in routeSymfony2,如果所有参数在路由中都是默认的,则自动重定向
【发布时间】:2014-01-26 15:08:00
【问题描述】:

这里有没有可能告诉Symfony2 framework,如果我的路由中的所有参数都具有默认值,将被重定向到同一路由但没有它们?同Symfony2生成URL地址。

例如:

default_blog:
    path:     /{type}/{page}
    defaults: { _controller: AcmeBlogBundle:Default:index, type: "page", page: 1}
    requirements:
        page: \d+
        type: page

所以如果我有/page/2 就可以了,但是如果我把/page/1 放到URL 我会被重定向到/。有没有可能,如果有,怎么做?

【问题讨论】:

    标签: php symfony routing


    【解决方案1】:

    在操作中添加参数$page 这是路由中的{page} 占位符,然后使用if 检查第一页。与类型相同:

    public function pageAction($type, $page) {
    
        if ($type == 'page' &&  $page == 1) {
            $this->redirect('/');
        }
    
    }
    

    【讨论】:

    • 这不是一个很好的解决方案。然后我可能会在我的路线中创建重定向。对于每个具有所有默认值的路由,难道不是任何全局解决方案吗?
    • 这是一个不错的解决方案。您不能在路由中直接使用重定向并检查默认值
    • 但我必须在我的控制器中手动使用它。因此,如果我有 10 个具有 3 多个动作的控制器,那么我必须将其粘贴 30 多次到每个动作方法。
    • 那么为什么要使用默认值呢?
    • 负责这个逻辑的Controller
    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多