簡體   English   中英

CakePHP 3:如何使用自定義分頁?

[英]CakePHP 3: How to use custom pagination?

我無法通過自定義查詢使用分頁。 我完全按照文檔中的內容進行操作,但是不起作用。 關鍵是要對記錄列表進行分頁,將標志“有效”標記為“ Y”或“ N”。

在控制器中:

if (!isset($this->request->query['valid']) || $this->request->query['valid'] == '')
  $allFilters['valid'] = 'N';
else
  $allFilters['valid'] = 'Y';
$this->paginate = ['finder' => ['curnames' => $allFilters]];
$data = $this->paginate($this->Names)->toArray();

在模型中:

public $paginate = ['finder' => 'curnames', 'limit' => 25, 'order' => ['Names.id' => 'asc']];

public function findCurnames(Query $query, array $options) {
  $query->where([
    'valid' => $option['valid']
  ]);
  return $query;
}  

當我執行代碼時,我得到一個Cake\\Network\\Exception\\NotFoundException異常。 我缺少什么?

更新:版本是3.3。 執行以下操作時將觸發錯誤:

$data = $this->paginate($this->Names)->toArray();

更新:在控制器中,我更改了該行

$this->paginate = ['finder' => ['curnames' => $allFilters]];

$paginate = ['finder' => ['curnames' => $allFilters]];

並且錯誤不再彈出。 但是不會考慮對'valid'='Y'或'N'進行條件過濾。 因此它仍然不起作用。

我得到了答案。 錯誤來自拼寫錯誤。 正確的代碼應該是

'valid' => $options['valid']

帶“ s”的選項。 現在可以了。

這樣做(沒有任何自定義查找器方法)是否更容易:

if ($this->request->getQuery('valid', '') == '')
  $valid = 'N';
else
  $valid = 'Y';

$this->paginate = [
  'limit' => 25,
  'order' => ['Names.id' => 'asc']
];
$query = $this->Names->find('all')
  ->where([
    'valid' => $valid
  ]);
$data = $this->paginate($query)->toArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM