【问题标题】:cakephp - how to route to the homepage with an argumentcakephp - 如何使用参数路由到主页
【发布时间】:2018-03-15 20:09:32
【问题描述】:

我对 cakephp 有点陌生,无法弄清楚路由是如何工作的。我已经阅读了文档并尝试了一些东西,但我现在想知道它的所有设置方式是否意味着无法使用蛋糕。

所以我有一个应用程序,访问它的大多数用户只会对一个页面感兴趣。所以我希望这个页面(付款/选择)成为人们在访问我的域的根目录时最终访问的页面。

    Router::connect(
        '/', 
        array('controller' => 'payments', 'action' => 'select')
    );

上面的工作正常,但我也想向这个动作传递一个参数。但是如果我在 / 旁边放一个 *

    Router::connect(
        '/*', 
        array('controller' => 'payments', 'action' => 'select')
    );

然后如果我想访问用户/登录例如它映射到支付/选择/用户/登录。

我怎样才能使所有其他控制器和操作都到他们应该去的地方,但是如果用户访问带有参数的主页,他们去我想要的地方?

我需要为每个控制器编写路由吗?如果有很多它们似乎过分了,所以我想知道是否有更正确的蛋糕方式。

谢谢

【问题讨论】:

    标签: cakephp url-routing cakephp-2.x


    【解决方案1】:

    * 是包罗万象的,所以这是预期的结果,它将捕获所有内容。如果您确实需要捕获任意参数,那么您必须将该路由定义移动到所有其他路由下方(它是先到先得),并确保上述路由足够具体,以便可以捕获所有路由到达。

    如果您不需要接受任意参数,并且/或者您不能将路由进一步向下移动,则定义一个实际的路由元素并对其进行限制,以便该路由仅匹配您指定的参数类型需要,或者使用正则表达式:

    Router::connect(
        '/:elementName', 
        array('controller' => 'payments', 'action' => 'select'),
        array('elementName' => '\d+') // argument must be a number
    );
    

    或使用自定义路由类,您可以在其中应用所需的任何逻辑。

    另见

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多