我有一个系统允许访问者通过列出,排序和过滤来浏览产品。
当访问者通过选择“品牌”,“操作系统类型”,“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可以做这样的事情,因为我是这个框架的初学者。或任何类似的解决方案?
我刚刚在路由器中进行了排序配置。但我不知道如何开始这样的事情(过滤器是无限制的参数)。
答案 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']
即可获得所需条款。希望有所帮助!