CakePHP 复选框未使用 Form Helper 检查

CakePHP Checkbox Not Checked Using Form Helper

这是我用来尝试使用 CakePHP Form Helper 的过程。这些示例是我自己的和我发现的示例的混合,但绝对行不通。每个示例都是 运行 相同的数据,这些数据已设置并且应该会产生一个选中的复选框,但是使用 Form Helper 它肯定会像我期望的那样工作。

这有效

这确实有效,但我想使用 CakePHP 表单助手

<input type="checkbox" name="value" <?php if(($this->data[ $alias ])){echo "checked";}?>>

但这行不通

<?php 
echo $this->Form->checkbox('value', [
    'checked' => ($this->data[ $alias ]) ? true : false
]); 
?>

不起作用

显然这对某些人有用,因为我发现这是对许多人的解决方案,但它绝对不会选中复选框。

<?php 
$checked = if($this->data['alias']) ? true : false;
echo $this->Form->checkbox('value', ['checked' => $checked]); 
?>

有效

无论出于何种原因,这确实有效,但不是很有用,所以我在下面的示例中做了下一个最好的事情。

<?php 
echo $this->Form->checkbox('value', ['checked']); 
?>

但是这不起作用???

虽然上面的示例确实有效,但这并不...

<?php 
$options = [];

if($this->data[ $alias ]) {
    array_push($options, 'checked');
    // $options = ['checked']; // this didn't work either
}

echo $this->Form->checkbox('value', $options); 
?>

好吧,我没有早点尝试这个是愚蠢的,但是对于那些有同样问题和自己鸽巢的人来说,这要求你不要使用布尔值,必须是 'true' 和 'false'.

有效的解决方案

 <?php echo $this->Form->checkbox('value', [
        'checked' => ($this->data[ $alias ]) ? 'true' : 'false'
    ]); ?>