4

我没有得到所有选中复选框的值。它只是给了我最后选择的复选框的值

这是代码

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'
}
4

2 回答 2

1

我认为这是因为“价值”。

在你的情况下使用"options" => array(1, 2, 3)

你最好不要在视图中设置值、默认值或类似的东西。使用控制器操作设置默认值。比它应该工作正常。

if ($this->request->isPost()) {

} else {
    $this->request->data['Model']['fieldname'] = 'defaultvalue';
}
于 2012-04-06T22:37:14.307 回答
1

对于多个复选框,您需要将其[]作为名称 HMTL 属性的最后一部分(有关更多说明,请参见此答案)。

这是在 CakePHP 中使用“选择”类型的输入完成的。如果您查看 2.0 的Form Helper 选择文档(但也适用于 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您不需要将 $apps 修改为与$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>
于 2013-06-12T11:40:17.077 回答