我没有获得所有选中复选框的值。它只是给我最后一个选中复选框的值
这是代码
foreach($apps as $app){
echo $this->Form->input('Application.id', array('type'=>'checkbox','multiple' => 'checkbox' , 'id'=>$app['Application']['description'], 'div'=>false,'type'=>'checkbox','value' => $app['Application']['description'],'label'=>$app['Application']['description']));
}
在提交时,我得到最后一个复选框,即LASTCHECKBOX
object(CakeRequest) {
params => array(
'plugin' => null,
'controller' => 'groups',
'action' => 'add',
'named' => array(),
'pass' => array()
)
data => array(
'Application' => array(
'id' => 'LASTCHECKBOX'
)
)
query => array()
url => 'groups/add'
base => ''
webroot => '/'
here => '/groups/add'
}
答案 0 :(得分:1)
我认为这是因为“价值”。
在您的情况下使用"options" => array(1, 2, 3)
你最好不要在视图中设置值,默认值或类似值。 使用控制器操作来设置默认值。 它应该工作得很好。
if ($this->request->isPost()) {
} else {
$this->request->data['Model']['fieldname'] = 'defaultvalue';
}
答案 1 :(得分:1)
对于多个复选框,您需要将[]
作为HMTL属性名称的最后一部分(有关详细说明,请参阅此answer)。
这是在CakePHP中使用'select'类型的输入完成的。如果您查看Form Helper select documentation for 2.0(但也适用于v1.2 +),则不需要使用复选框创建多重选择所需的循环:
<?php
$options = array(
'Value 1' => 'Label 1',
'Value 2' => 'Label 2'
);
echo $this->Form->select('Model.field', $options, array(
'multiple' => 'checkbox'
));
?>
因此,我认为您不需要foreach($apps
您需要修改$ app,其格式与$options
类似。
<?php
$apps = array(
'App Id 1' => 'Description 1',
'App Id 2' => 'Description 2'
);
echo $this->Form->select('Application.id', $apps, array(
'multiple' => 'checkbox'
));
?>
应该输出:
<div class="input select">
<label for="ApplicationId">Id</label>
<input name="data[Application][id]" value="" id="ApplicationId" type="hidden">
<div class="checkbox">
<input name="data[Application][id][]" value="App Id 1" id="ApplicationId1" type="checkbox">
<label for="ApplicationId1">Description 1</label>
</div>
<div class="checkbox">
<input name="data[Application][id][]" value="App Id 2" id="ApplicationId2" type="checkbox">
<label for="ApplicationId2">Description 2</label>
</div>
</div>