cakeDC搜索和复选框

时间:2015-08-18 13:17:40

标签: php cakephp cakephp-3.0 cakedc

我有一个带复选框的搜索表单。

index.ctp

...
echo $this->Form->input('active', 
[
    'label' => 'Select only active users',
]);
...

我喜欢以下行为:

  • 如果取消选中active,则列出所有记录(没有条件添加到查询中)
  • 如果选中active,则列表仅记录active = true
  • 的位置

相反,由于隐藏字段,当取消选中活动时,会将值0传递给组件,并且仅显示带有active = false的记录

如果删除隐藏字段:

echo $this->Form->input('active', 
[
    'label' => 'Select only active users',
    'hiddenField' => false
]);

然后在GET参数中传递active=1,并且无法再取消选中输入。

我解决了创建我自己的隐藏字段而不是cakephp创建的字段并将其值设置为null

$this->Form->hidden('active', ['value' => ''])

但我不喜欢这个解决方案。有没有办法告诉蛋糕,所以将隐藏字段的默认值设置为null或更改使用复选框时的cakeDC搜索插件默认行为?

1 个答案:

答案 0 :(得分:0)

以下标记的评论是解决方案

模板文件

$filterArgs = [
    'active' => [
        'name' => 'active',
        'type' => 'value',
    ],
]

表格文件

$presetVars = array(
    'active' => [
        'name' => 'afa',
        'type' => 'value',
        'emptyValue' => '0',
    ],
);

控制器文件

{{1}}

(老实说,我仍然不明白为什么我们必须在表格文件和控制器中设置参数)