繁体   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