1

有谁知道如何在 CakePHP 的表单中显示两个单选按钮并将它们保存到数据库中的布尔字段?

我可以让我的布尔值显示为复选框(默认行为),但我需要显示两个单选按钮,但是当我这样做时,更改不会保存到数据库中。

我觉得这是一件非常简单的事情。这是我的代码:

<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']));
?>

谢谢

4

1 回答 1

4

您正在覆盖输入的名称,因此 for 的值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这个插件显示所有信息(请求数据、查询、会话变量等),而无需添加调试行

于 2013-05-02T23:11:39.357 回答