配置路由器cakephp以生成无限/可选参数

时间:2013-01-17 08:56:39

标签: cakephp parameters routing

我有一个系统允许访问者通过列出,排序和过滤来浏览产品。

当访问者通过选择“品牌”,“操作系统类型”,“cpu”过滤时,我希望我的网址看起来像这样"/category/smartphones/samsung/android/.../" ...所以他们过滤的每件事情,网址都会像:

filter by brand : /category/smartphones/samsung/
by os type : /category/smartphones/android/
by brand and os type : /category/smartphones/samsung/android/
...

此外,访问者可以在过滤时进行排序,也可以在排序时进行过滤。所以网址可能更像"/category/smartphones/samsung/android/sort:created/direction:desc/"

我不知道cakephp可以做这样的事情,因为我是这个框架的初学者。或任何类似的解决方案?

我刚刚在路由器中进行了排序配置。但我不知道如何开始这样的事情(过滤器是无限制的参数)。

1 个答案:

答案 0 :(得分:4)

这实际上非常简单,如果你对Cake的默认路由方法感到满意,你甚至不需要路由文件中的条目。 : - )

这就是我做的......

class PagesController extends AppController {
    function test() {
        debug($this->params['named']);
        debug($this->params['pass']);
    }
}

然后我打电话给... http://localhost/pages/test/x/y/z/something:x/else:y/1/2/3

输出这个......

array(
    'something' => 'x',
    'else' => 'y'
)

array(
    (int) 0 => 'x',
    (int) 1 => 'y',
    (int) 2 => 'z',
    (int) 3 => '1',
    (int) 4 => '2',
    (int) 5 => '3'
)

因此,您只需使用$this->params['named']$this->params['pass']即可获得所需条款。希望有所帮助!