我创建了一个名为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
版本。
答案 0 :(得分:0)
作为第一步,我将交换路由器规则的顺序,因为cakephp在找到第一个匹配后停止。虽然“/ movieslist /:page”将匹配带有页面的URL,但它仅对命名参数page
执行此操作。如果没有它,“/ movielist / 2”形式的URL可能会被解释为带有正常参数“2”的“/ movielist”链接,因此第一个路由器规则会触发。
如果这不起作用,您可以随时手动设置命名的page
参数。 paginate
只是看看它是否已设置,但不关心cakephp是否自动从网址中找出它或者你自己是否这样做。
public function index($myPage=1) {
$this->Movie->recursive = 0;
$this->paginate = array('limit'=>5);
$this->params["page"] = $myPage;
$this->set('movies', $this->paginate());
}