在CakePHP表单中将布尔值显示为单选按钮

时间:2013-05-02 21:33:15

标签: forms cakephp

有没有人知道如何在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']));
?>

由于

1 个答案:

答案 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此插件显示所有信息(请求数据,查询,会话变量等),而无需添加调试行