【问题标题】:cakephp checkbox multiple select just sends the value of last selected checkboxcakephp 复选框多选仅发送最后选择的复选框的值
【发布时间】:2012-04-20 10:56:22
【问题描述】:

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

这里是代码

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

【问题讨论】:

标签: cakephp cakephp-1.3 cakephp-2.0


【解决方案1】:

我认为是因为“价值”。

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

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

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

} else {
    $this->request->data['Model']['fieldname'] = 'defaultvalue';
}

【讨论】:

  • 好吧,如果您使用“多个”复选框,那么必须有多个值可供选择。因此,您有一个包含多个条目的选项数组(而不是单个值)。
【解决方案2】:

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

这是在 CakePHP 中使用“选择”类型的输入完成的。如果您查看 2.0 的 Form Helper select documentation(但也适用于 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>

【讨论】:

    猜你喜欢
    • 2016-05-22
    • 2013-07-29
    • 1970-01-01
    • 2014-10-07
    • 2021-05-08
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多