【问题标题】:CakePHP Pagination global configurationCakePHP 分页全局配置
【发布时间】:2012-12-22 07:07:39
【问题描述】:

我正在使用 CakePHP2,但没有找到如何更改(重新配置)分页限制,例如,从 20 到 30。

有一个“全局默认限制”来设置“分页器”中的记录数(PaginatorHelper?)?

“全球”的意思是“所有站点”。

【问题讨论】:

  • 那么您还没有阅读 CakePHP 文档上的页面吗? book.cakephp.org/2.0/en/core-libraries/components/…
  • 是的...“CakePHP 中的分页由控制器中的组件提供”。但作为一个框架,它可以提供另一种机制来“重新配置”所有站点,而不是每个控制器。

标签: cakephp pagination


【解决方案1】:

在你的控制器中

public $paginate = array('limit' => 25);

【讨论】:

  • 是的,这是本地的,但我需要所有站点的“全局”。
  • 这就是应用控制器的用途。
  • 我用 AppController.php 进行了测试,OK!抱歉,我投票给@Martin。你什么都不说,只说“你的控制器”……理解为“特定的”,而我(和任何其他 Cake-beginner)都不知道 AppController 是一个“全局配置的地方”。
【解决方案2】:

查看 CakePHP 的 Paginator 组件的代码,您可以使用以下语法在控制器中设置全局限制(最好的位置是您的 AppController):

...
public $paginate=array(); 
...
public function beforeFilter() {
    parent::beforeFilter();
    $this->paginate['limit'] = 15;
}

我没有测试过,但希望它能按预期工作。

【讨论】:

  • 哼...在app/Controller/AppController.php测试,在beforeFilter()方法处添加...全局错误:“间接修改重载属性...没有效果”。跨度>
  • 如果您使用 before 过滤器,只需将public $paginate=array(); 放入您的AppController;然后解决此错误。再次,read the docs。都在那里
  • 根据this $this->paginate['limit'] = 15;并与 parent::beforeFilter();在每个控制器的 beforeFilter 回调之前
  • 操作,好的!谢谢@erem!只有 $this->paginate['limit'] = 15;
  • @MartinBean 需要使用public $paginate=array();$this->paginate['limit'] = 15; 进行编辑才能获得我的投票/接受。我编辑了但你不接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 2011-07-31
  • 1970-01-01
  • 2014-01-01
  • 2018-07-23
相关资源
最近更新 更多