我正在使用yii2 Activeform和gridview
表单上有2个字段message
和file
以及submit
按钮
gridview
在同一页面上。
因此,当用户从复选框列中选中任何用户并键入message
时,应将message
发送给所有选定的用户
这是我到目前为止所做的事情
<div class="row">
<p>
<?php $form = ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data','id' => 'message-form']]); ?>
<div class="form-group col-xs-3 col-lg-3">
<?= $form->field($model, 'message')->textarea(['rows' => 6]) ?>
</div>
<div class="form-group col-xs-3 col-lg-3">
<?= $form->field($model, 'file')->fileInput() ?>
<?= $form->field($model, 'keys[]')->hiddenInput()->label(false); ?>
<div class="form-group">
<?= Html::submitButton('Send',['class' => 'btn btn-danger','data-placement'=>'right','id'=>'sendMessage']) ?>
</div>
</div>
<?php ActiveForm::end(); ?>
</p>
</div>
上面是表单..现在我可以使用keys
变量,但该数组的格式是这样的
Keys{
0="1,5,7,6,8"
}
我希望那种格式像这样
Keys{
0="1",
1="2",
2="5",
3="7",
}
那么如何将数据与message
和file
目前我通过隐藏的输出字段发送数据,但它不是以我想要的格式发送数据。 我知道这可以使用javascript完成,但不知道该怎么做??
这是我正在使用的javaquery
$('input[type="checkbox"]').change(function() {
var keys = $("#checkin-table").yiiGridView("getSelectedRows");
sendKeys.val(keys);
if(keys.length > 0){
sendMessage.removeClass("disabled");
}
else if(keys.length==0){
sendMessage.addClass("disabled");
}
});
答案 0 :(得分:1)
根据我的理解,您的表单中的隐藏字段只渲染一次,因为您使用的是[]
,您只能在0
变量中获得所有值的索引$keys
,您需要的是什么$keys = array(1,3,4,5)
所以你需要多次渲染键字段,例如:
<?= $form->field($model, 'keys[]')->hiddenInput(['value' => 1])->label(false); ?>
<?= $form->field($model, 'keys[]')->hiddenInput(['value' => 2])->label(false); ?>
如果您不需要,您可以在当前情况下执行此操作:
$keys = Yii::$app->request->post('keys');
$keys = explode(",",$keys[0]);