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

複数のチェックボックスの場合[]、 name HMTL 属性の最後の部分として必要です (詳細については、この回答を参照してください)。

これは、'select' タイプの入力を使用して CakePHP で行われます。2.0のForm Helper select ドキュメント(ただし、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 に答える
1

それは「価値」があるからだと思います。

あなたの場合、使用"options" => array(1, 2, 3)

ビューで値、デフォルト、またはそのようなものを設定しないでください。コントローラ アクションを使用してデフォルトを設定します。正常に動作するはずです。

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

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