有没有人知道如何在CakePHP中的表单中显示两个单选按钮并将它们保存到DB中的布尔字段?
我可以将我的布尔值显示为复选框(默认行为)但我需要显示两个单选按钮,但是当我这样做时,更改不会保存到数据库。
我觉得这很简单。这是我的代码:
<h1>Edit Content</h1>
<?php
$thisVal = $this->data['LessonContent']['is_exercise'] ? "1" : "0";
$options = array(
'0' => 'Learning Material',
'1' => 'Exercise'
);
echo $this->Form->create('LessonContent', array('action'=>'edit'));
echo $this->Form->input('name', array('label' => 'Name'));
echo $this->Form->input('description', array('label' => 'Description'));
echo $this->Form->input('is_exercise', array(
'type' => 'radio',
'class' => 'radio',
'legend' => false,
'name' => 'Type',
'options' => $options,
'value' => $thisVal
));
echo $this->Form->input('id', array('type'=>'hidden'));
echo $this->Form->input('lesson_id', array('type'=>'hidden'));
echo $this->Form->end('Save Content');
echo $this->Html->link('Cancel', array('controller'=>'Lessons', 'action'=>'view', $this->data['Lesson']['id']));
?>
由于
答案 0 :(得分:4)
您正在覆盖输入的名称,因此is_excercise
的值将以Type
的形式发送。
删除name
选项;
echo $this->Form->input('is_exercise', array(
'type' => 'radio',
'class' => 'radio',
'legend' => false,
'options' => $options,
'value' => $thisVal
));
进行此更改后,您可能甚至不必手动设置单选按钮的值。
在这种情况下,请始终通过FireBug检查/调试发布的表单数据,或者通过将其放入控制器中,在CakePHP中进行调试;
debug($this->request);
更好的是,安装CakePHP DebugKit Plugin此插件显示所有信息(请求数据,查询,会话变量等),而无需添加调试行