背景
使用CakePHP的FormHelper,我创建了多个单选按钮,每个按钮都通过单独调用input()呈现,以允许在单选按钮之间使用HTML 。
问题
提交表单时,只有最后一个单选按钮的值正在提交给服务器。
// preselect radio button if appropriate
$selected = isset($this->request->data['ModelName']['field']) ? $this->request->data['ModelName']['field'] : null ;
// output the radio button
echo $this->Form->input('field', array(
'type' => 'radio',
'options' => array(1 => 'Option A',),
'class' => 'testClass',
'selected' => $selected,
'before' => '<div class="testOuterClass">',
'after' => '</div>',
));
要求
如何使用FormHelper创建所有单选按钮(或复选框)以正确提交值?
答案 0 :(得分:3)
对于某些输入类型(复选框,无线电),会创建隐藏输入,以便即使没有指定值,
$this->request->data
中的键也会存在。如果要在窗体上创建多个输入块,这些输入块全部组合在一起,则应在除第一个输入之外的所有输入上使用此参数。如果隐藏输入位于多个位置的页面上,则仅保存最后一组输入值。 (Documentation)
因此,对于您的任务,将'hiddenField' => false,
作为一个选项传递给input()
的所有来电 组的单选按钮(或复选框)除了第一个。在此示例中,我们使用名称&#39;字段&#39;。
e.g。
echo $this->Form->input('field', array(
'type' => 'radio',
'options' => array(1 => 'Option A',),
'class' => 'testClass',
'selected' => $selected,
'before' => '<div class="testOuterClass">',
'after' => '</div>',
'hiddenField' => false, // added for non-first elements
));
答案 1 :(得分:-1)
尝试以下方法:
<?php echo $this->Form->input('fieldName', array(
'type' => 'radio',
'hiddenField' => false,
'options' => array('value1' => 'option label1'))
)); ?>
<?php echo $this->Form->input('fieldName', array(
'type' => 'radio',
'hiddenField' => false,
'options' => array('value2' => 'option label2'))
)); ?>
<?php echo $this->Form->input('fieldName', array(
'type' => 'radio',
'hiddenField' => false,
'options' => array('value3' => 'option label3'))
)); ?>
希望这有效。