我有非常奇怪的复选框行为。我正在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>
我做过这个测试,仍然没有改变
答案 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
}
希望这篇文章能帮助别人。