YII2将来自不同复选框的数据收集到一个字段

时间:2017-01-03 14:09:47

标签: php html checkbox yii2

我有非常奇怪的复选框行为。我正在YII2中做一个页面,我有一些不同选项的复选框,我需要收集所有这些并添加到数据库。我的问题是我无法收集任何数据。视图有这种形式。

  <?php $form1 = ActiveForm::begin(); ?>
    <?= 
         DetailView::widget([
        'model' => $model,
        'condensed' => false,
        'enableEditMode' => false,
        'hover' => true,
        'labelColOptions' => ['style' => 'width:20%; text-align:left !important; '],
        'mode' => DetailView::MODE_VIEW,
        'vAlign' => DetailView::ALIGN_MIDDLE,
        'valueColOptions' => ['style' => 'vertical-align: middle; '],
        'panel' => [
            'heading' => Yii::t('api', 'Description_a'),
            'type' => 'company',
        ],

        'attributes' => [
            [
                'group' => true,
                'label' => Yii::t('api', 'actions_grup1'),
                'rowOptions' => ['class' => 'info']
            ],
     ['label' => Html::checkbox('101', false, ['label' => Yii::t('api', 'Action1')]),
                'value' =>Yii::t('api', 'Description_1'),
            ],
     ['label' => Html::checkbox('102', false, ['label' => Yii::t('api', 'Action2')]),
                'value' =>Yii::t('api', 'Description_2'),
            ],
          ],
        ],
    ]);
           <?= Html::a(Yii::t('api','create_new'), ['controller/create'], ['class' => 'btn btn-success' ]) ?>       
      <?php ActiveForm::end(); ?>

即使检查中的所有复选框都有 false ,我也可以看到* value =&#34; 1&#34; *以及功能创建在控制器中我现在只有这个

 $post=Yii::$app->request->post();
var_dump($post);
exit;

$ post array(0){} 没有电表,如果我点击或不选中某个复选框进行检查 有人能告诉我我做错了什么吗?或者我错过了什么?

UPDATE添加输出表单 view-source

<tr><th style="width: 20%; text-align: right; vertical-align: middle;"><label><input type="checkbox" name="1001" value="1"> Api Update</label></th>
<td style="vertical-align: middle; "><div class="kv-attribute">This function will give </div> </td></tr> 
<tr><th style="width: 20%; text-align: right; vertical-align: middle;"><label><input type="checkbox" name="1002" value="1"> Delete API</label></th> 
<td style="vertical-align: middle; "><div class="kv-attribute">This function will give </div> </td></tr>

更新2将ID添加到复选框

 <tr><th style="width: 20%; text-align: right; vertical-align: middle;"><label><input type="checkbox" id="101" name="1001" value="1"> Action 1</label></th>
<td style="vertical-align: middle; "><div class="kv-attribute">This function will </div></td></tr>
<tr><th style="width: 20%; text-align: right; vertical-align: middle;"><label><input type="checkbox" id="102" name="1002" value="1"> Action 2</label></th>
<td style="vertical-align: middle; "><div class="kv-attribute">This function will </div></td></tr>

我做过这个测试,仍然没有改变

2 个答案:

答案 0 :(得分:0)

据我所知,您的输入名称不是以字母开头的。 符合HTML4 specification名称应从字母a-z

开始

请在复选框名称和ID之前添加任何字符。

答案 1 :(得分:0)

问题是在下一部分,行动的声明不必在按钮中就必须像这样

<?php $form = ActiveForm::begin( ['action' => BaseUrl::to(['controller/createnew ']),  'method' => 'post',] ); ?>

使用全部选中复选框将传递值为1的id,按钮必须是不同的类型,必须提交。

echo Html::submitButton(Yii::t('api','create_new'),  ['class' => 'btn btn-success' ]);

所以现在我可以收集控制器中的所有数据,就像这样

 $post=Yii::$app->request->post();
 $checkbox= array_keys (  $post );
 foreach ( $checkbox as $value  ){
    //do what you need 
 }

希望这篇文章能帮助别人。