将POST数据作为隐藏输入名称值数组发送

时间:2015-10-06 06:03:18

标签: javascript jquery gridview yii2

我正在使用yii2 Activeform和gridview

表单上有2个字段messagefile以及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",
} 

那么如何将数据与messagefile

一起以该格式发送到控制器

目前我通过隐藏的输出字段发送数据,但它不是以我想要的格式发送数据。 我知道这可以使用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");
    }
});

1 个答案:

答案 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]);