将复选框写入CakePHP会话

将复选框写入CakePHP会话,cakephp,if-statement,checkbox,controller,Cakephp,If Statement,Checkbox,Controller,我想有一个表格,我有一个额外的复选框(将不会存储输入到数据库),这将在控制器读出 比如说。 在作业编辑视图中,我可以选择一个用户。此用户下有一个复选框。此复选框将在我将作业分配给用户后发送电子邮件 在我的控制器里我写 $post_array = $this->request->data; if ($post_array['Job']['mailcheck'] == NULL) { // DO SOMETHING } else { // DO SOMETHING }

我想有一个表格,我有一个额外的复选框(将不会存储输入到数据库),这将在控制器读出

比如说。 在作业编辑视图中,我可以选择一个用户。此用户下有一个复选框。此复选框将在我将作业分配给用户后发送电子邮件

在我的控制器里我写

$post_array = $this->request->data;
if ($post_array['Job']['mailcheck'] == NULL) {
    // DO SOMETHING
} else {
    // DO SOMETHING
}
但它不会读取复选框值

有没有办法解决这个问题

Thx的帮助

这就足够了:

if (!empty($this->request->data['Job']['mailcheck'])) {
    // yes, checkbox was selected
} else {
    // no, it was not selected
}

虽然马克的回答是正确的,但请允许我详细说明

请记住,复选框有时表现得很奇怪。未选中的复选框可能根本不会发布,这可能就是您的条件失败的原因

关于为什么你不能让它工作:

在这两种情况下,您似乎都在执行重定向,这就是您从未看到编辑表单的原因。检查您是否遗漏了某些内容,或者尝试以下方法:

if ($this->request->is('post')) {
    if (!empty($this->request->data['Job']['mailcheck'])) {
        $this->redirect(array('action' => 'sendMails',$id));
    } else {
        $this->redirect(array('action' => 'sorted'));
    }
}

嗨,马克,当我使用你的例子时,不会显示任何错误。但是,当我在详细信息视图中单击“分配用户”时,它不会显示我可以分配用户的编辑表单。我的代码如果(!empty($this->request->data['Job']['mailcheck']){$this->redirect(数组($action'=>'sendMails',$id));}否则{$this->redirect(数组($action'=>'sorted'));}我将直接重定向到“sorted”视图。我做错了什么?也许你搞错了?如果你想要的结果应该是相反的,请切换这两个语句。我尝试一下。我不获取我的“assignUser”编辑视图。当我删除完整的if语句时,我得到了编辑视图,问题可能出在你的
//做点什么
部分?尝试调试发布的数据,如果使用多个复选框,“mailcheck”可能是一个数组,而不是单个值。要调试,只需执行
debug($this->request->data)app/Config/core.php