CakePHP:FormHelper不保存来自两个同名输入的数据
在我的表单中有一长行复选框,我想将其显示为两列复选框(出于与演示相关的原因)。因此,在下面的代码中,我将选项拆分为两个单独的数组,并使用相同的名称创建两个不同的选项。当我调试时($this->request->data)代码>位置键始终为空。但是,相同的代码可以作为单个输入正常工作。我做错了什么CakePHP:FormHelper不保存来自两个同名输入的数据,php,forms,cakephp,cakephp-2.0,Php,Forms,Cakephp,Cakephp 2.0,在我的表单中有一长行复选框,我想将其显示为两列复选框(出于与演示相关的原因)。因此,在下面的代码中,我将选项拆分为两个单独的数组,并使用相同的名称创建两个不同的选项。当我调试时($this->request->data)位置键始终为空。但是,相同的代码可以作为单个输入正常工作。我做错了什么 <?php $count = count($location_options); //$location_options is passed from the controller $half = ro
<?php
$count = count($location_options); //$location_options is passed from the controller
$half = round( $count/2 );
$location_options1 = array_slice($location_options, 0, $half, TRUE);
$location_options2 = array_slice($location_options, $half, NULL, TRUE);
//I CAN'T GET THIS TO WORK!!
//echo $this->Form->input('location', array('type'=>'select', 'multiple'=>'checkbox', 'options'=>$location_options1, 'div'=>array('class'=>'col-xs-12 col-sm-6 form-group', 'style'=>'margin-bottom:0;', 'selected'=>$user_location_alert_tag_ids)));
//echo $this->Form->input('location', array('type'=>'select', 'multiple'=>'checkbox', 'options'=>$location_options2, 'div'=>array('class'=>'col-xs-12 col-sm-6 form-group', 'selected'=>$user_location_alert_tag_ids)));
//BUT THIS WORKS JUST FINE
echo $this->Form->input('location', array('type'=>'select', 'multiple'=>'checkbox', 'options'=>$location_options, 'div'=>array('selected'=>$user_location_alert_tag_ids)));
?>
查看生成的HTML,为每个select元素生成一个隐藏字段,以确保数据中存在适当的键 具有相同名称的多个字段将导致生成多个隐藏字段,其中最后一个字段将覆盖前一个字段 这可以避免用于其他字段,因此隐藏的初始值设定项字段仅为第一个输入生成。引用文件: 如果要在一个窗体上创建多个分组在一起的输入块,则应在除第一个输入外的所有输入上使用此参数。如果隐藏的输入在页面的多个位置,则只保存最后一组输入值 此外,还应该为这两个输入定义一个唯一的ID,否则将导致无效的HTML,因为助手将生成重复的ID 最后但并非最不重要的一点是,您的括号可能有点错误,
selected
键嵌套在div
键中,如果这是定义所选条目的必要条件,我想这是错误的
echo $this->Form->input('location', array(
'id' => 'location1',
'type' => 'select',
'multiple' => 'checkbox',
'options' => $location_options1,
'div' => array('class' => 'col-xs-12 col-sm-6 form-group', 'style'= > 'margin-bottom:0;')
'selected' => $user_location_alert_tag_ids
)));
echo $this->Form->input('location', array(
'id' => 'location2',
'type' => 'select',
'multiple' => 'checkbox',
'options' => $location_options2,
'div' => array('class' => 'col-xs-12 col-sm-6 form-group'),
'selected' => $user_location_alert_tag_ids
'hiddenField' => false
)));