簡體   English   中英

如何在cakephp 3.6中設置默認查詢參數?

[英]Ho to set a default query parameter in cakephp 3.6?

我有一個經典的索引頁,其中包含可以過濾記錄的表單。

我的領域之一是year 假設我希望用戶首次訪問頁面時(即查詢字符串為空時)按當前年份對記錄進行預過濾

我做了什么:

在我的控制器中,我做了這樣的事情

if(empty($this->request->query))
{
    $this->request->query['year'] =  date('Y');
}

然后在friendsofcake /搜索插件的幫助下:

$this->MyTable->find('search', [
    'search' => $this->request->getQuery()
]);

通過這種方式,可以過濾記錄,並使用當年的表格進行預編譯,因為我認為

'valueSources' => 'query'

現在蛋糕3.6查詢的直接修改已被棄用(見這個問題,我打開)。 實際上,當我嘗試更改查詢數組時會收到棄用警告。

我的問題:

因此,我想知道在沒有警告的情況下實現相同行為的最佳方法是什么。 我也想知道我的方法是否錯誤以及為什么錯誤。

在控制器中:

$searchValues = $this->request->getQueryParams() ?: ['year' => date('Y')];
$this->MyTable->find('search', [
    'search' => $searchValues
]);
$this->set(compact('searchValues'));

在模板中:

$this->Form->create(['schema' => [], 'defaults' => $searchValues]);

理想情況下,您還可以在schema設置適當的值,如下所示:https://api.cakephp.org/3.6/class-Cake.View.Form.ArrayContext.html

嘗試這樣的事情(未經測試):

$this->setRequest($this->getRequest()->withQueryParams([
    'year' => date('Y'),
]);

暫無
暫無

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

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