0

我有点卡住了,试图弄清楚如何在带有一组命名参数的 URL 上使用 slug:

网址如下:/controller/action/param:1-Slug1/param:2-Slug2/param:3-Slug3

这给了我以下请求对象中的命名参数数组:

[named] => Array
        (
            [param] => Array
                (
                    [0] => 1-Slug1
                    [1] => 2-Slug2
                    [2] => 3-Slug3
                )

        )

如何配置路由以考虑 slug?这样的输出是:

[named] => Array
            (
                [param] => Array
                    (
                        [0] => 1
                        [1] => 2
                        [2] => 3
                    )

            )

谢谢你的帮助。

4

1 回答 1

0

首先,您不需要这些[0], [1]东西,通过将参数命名为相同,您将自动创建一个数组。因此将您的网址更改为

/controller/action/param:1-Slug1/param:2-Slug2

您的路线如下所示,

Router::connect('/:controller/:action/*');

通过在末尾传递一颗星,路线将自动通过您添加的任何额外参数。这将允许您将尽可能多的参数传递到您想要的 url。

如果您想使用命名参数,路线将如下所示。

Router::connect('/:controller/:action:/:slug', array(), array('slug' => '[a-z0-9-]+'));

这会将 slug 与正则表达式进行匹配,以形成匹配的路线。正则表达式允许任何字母、数字和连字符。

在这里阅读更多,http://book.cakephp.org/2.0/en/development/routing.html#passing-parameters-to-action

于 2013-04-09T15:06:53.617 回答