1

我创建了一个名为电影的插件,我使用了自定义路线。我已将分页限制用作“5”。

第一页很好,但是当我点击下一页或数字时。那些东西是行不通的。

网址:something.com/movieslist/2

my Plugin/Movies/Config/routes.php

Router::connect('/movieslist', array('plugin' => 'Movies', 'controller' => 'Movies', 'action' => 'index'));
Router::connect('/movieslist/:page', array('plugin' => 'Movies', 'controller' => 'Movies', 'action' => 'index'));

my action code: Plugin/Movies/Controller/MoviesController.php

public function index() {
        $this->Movie->recursive = 0;
        $this->paginate = array('limit'=>5);
        $this->set('movies', $this->paginate());
    }

my view file code: Plugin/Movies/View/Movies/index.ctp

来自 cakebake 控制台的相同。此处未进行任何更改。

甚至排序也不起作用:(我已经在很多地方搜索我的问题了:(

我以前在链接本身中遇到错误,我在看到这个页面后修复了这个问题: CakePHP custom route pagination

链接是固定的,但链接不起作用。请不要投票,我很长一段时间都在挣扎。

我正在使用cakephp 2.0版本。

4

1 回答 1

0

作为第一步,我将交换路由器规则的顺序,因为 cakephp 在找到第一个匹配项后停止。虽然 "/movieslist/:page" 会将 url 与页面匹配,但它只对命名参数这样做page。如果没有它,“/movielist/2”形式的 url 可能会被解释为带有普通参数“2”的“/movielist”链接,因此会触发第一个路由器规则。

如果这不起作用,您总是可以手动设置命名page参数。paginate只是查看它是否已设置,但不关心 cakephp 是自动从 url 中找出来的,还是您自己做的。

public function index($myPage=1) {
    $this->Movie->recursive = 0;
    $this->paginate = array('limit'=>5);
    $this->params["page"] = $myPage;
    $this->set('movies', $this->paginate());
}
于 2012-08-29T10:57:48.440 回答