【问题标题】:Pagination and sort - Plugin not working - CakePHP 2.0分页和排序 - 插件不起作用 - CakePHP 2.0
【发布时间】:2012-08-16 08:51:26
【问题描述】:

我创建了一个名为 movies 的插件,我使用了自定义路由。 我已将分页限制设为“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 版本。

【问题讨论】:

    标签: cakephp sorting plugins pagination cakephp-2.0


    【解决方案1】:

    作为第一步,我将交换路由器规则的顺序,因为 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());
    }
    

    【讨论】:

    • 非常感谢@mtsvetkov,实际上我将所有文件从插件更改为主控制器文件夹。现在它工作正常。无论如何,我会试一试,让你知道它的工作与否:)
    猜你喜欢
    • 2012-03-08
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2013-06-07
    • 2014-02-17
    • 2013-06-03
    相关资源
    最近更新 更多