【发布时间】:2017-09-21 17:22:06
【问题描述】:
我不确定我所要求的是否可行,但情况如下:
我有一个 foreach() 循环,它以 HTML 格式返回一些值:
<?php foreach($stuff as $s) { ?>
<tr>
<td><?php echo $s['Model']['data']; ?> </td>
</tr>
<?php } ?>
我需要做的是在每个$s['Model']['data'] 旁边放一个复选框,最好以$s['Model']['data'] 作为标签,并且能够根据是否选中该框在表格中设置一个值。所以,我的edit.ctp 看起来像这样:
<?php foreach($stuff as $s) { ?>
<tr>
<td><?php echo $this->Form->input('flag', array('type'=>'checkbox, 'default'=>'', label=>' $s['Model']['data']', 'value'=>1 )); ?> </td>
</tr>
<?php } ?>
我可以毫无问题地显示以上内容。我的问题是,如果选中了标签框,我不知道如何告诉我的控制器更新必要的字段。这是我的第一次尝试:
if($this->request->save($this->request->data)) {
foreach($stuff as $s) {
$this->Model->id = $s['Model']['id'];
if(isset($this->request->data['FormName']['flag'])) {
$this->Model->set('flag', 1);
$this->Model->save('flag', true);
}
}
}
运行时没有错误,但没有任何反应。我需要更新的模型中的flag 字段仍然= 0。我可以调试$stuff 并查看数据,所以我知道它在那里。我也知道我的编辑函数正在执行 foreach() 循环。我可能会错过什么?我是否需要为复选框分配不同的值或检查它是否以其他方式设置?
【问题讨论】: