我沒有成功地將分頁與自定義查詢結合使用。我完全遵循文檔中的內容,但不起作用。重點是將記錄列表分頁,將標記「有效」設置爲「Y」或「N」。CakePHP 3:如何使用自定義分頁?
在控制器:
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]];
和錯誤不會彈出了。但是,對「有效」=「Y」或「N」的條件過濾不予考慮。所以它仍然不起作用。
接收錯誤無論何時,請務必上傳**的_complete_錯誤**,那就是**包括_full_ stacktrace **(理想情況下,以可正常讀取的方式從日誌中複製),即使問題對熟悉CakePHP的人員來說可能很明顯!還顯示/描述相應的上下文,即顯示/突出顯示實際觸發錯誤的代碼,並且請始終提及您的_exact_ CakePHP版本 - 謝謝!收集這些信息時,問題甚至會自行解決。 – ndm
不要這樣做,請使用基於PRG模式的過濾方法,如[搜索](https://github.com/FriendsOfCake/search)。這個插件可以用少於三行的方式來完成同樣的事情,並且以後可以在上面添加更多的搜索過濾器。 – mark