我使用Paginator组件,每当用户/机器人转到高页码时,他都会得到一个未找到的异常。 这可能没问题,但我想将301用户重定向回第一页。
现在我知道[cakePHP 2文档] [1]告诉我如何针对个别情况进行操作,但我想在不添加代码位的情况下为所有分页执行此操作。
我尝试在我的应用程序中构建自己的Paginator组件,核心组件为Parent,但由于我没有名称空间,我只需调用自己的Component并以循环结束
<?php
App::uses('PaginatorComponent', 'Vendor/Controller/Component');
class PaginatorComponent extends PaginatorComponent {
public function paginate($object = null, $scope = array(), $whitelist = array()) {
try {
PaginatorComponent::paginate($object, $scope, $whitelist);
} catch (NotFoundException $e) {
if ($this->request->query('page') <= 1) {
throw new NotFoundException();
}
$this->redirect($this->here);
}
}
}
答案 0 :(得分:1)
您无法调用您的组件PaginatorComponent
,因为这已经存在!这条线应该立即敲响警钟: -
class PaginatorComponent extends PaginatorComponent {
而是将您的组件命名为CustomPaginatorComponent
之类的不同内容: -
class CustomPaginatorComponent extends PaginatorComponent {
您还需要使用自定义parent::paginate()
方法拨打paginate()
,而不是PaginatorComponent::paginate()
。