使用kartik select2小部件,我希望通过将数据传递给控制器来将数据保存到数据库。
我试过这个 1. select2小部件
<?php $form = ActiveForm::begin(['id'=>$model->formName()]); ?>
<?php
echo $form->field($model, 'unitid')->widget(Select2::classname(), [
'data' => ArrayHelper::map($model2,'unitid','unitname'),
'language' => 'de',
'options' => ['multiple' => true, 'placeholder' => 'Select a Unit '],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
<?php ActiveForm::end(); ?>
用于在视图上保存表单提交数据的javascript代码:
<?php
$script = <<< JS
$('form#{$model->formName()}').on('beforeSubmit', function(e)
{
var \$form = $(this);
console.log(\$form.serialize());
$.post(
\$form.attr("action"),
\$form.serialize()
)
.done(function(result) {
console.log("Succesifully saved" + result);
}).fail(function(err)
{
console.log("failed to save" + err);
});
return false;
});
JS;
$this->registerJs($script);
?>
这会在控制台上生成此输出(对于序列化表单输出
_csrf=TGMzaDRINnEHFgM5RjIPICc2bBoZAWZAOBIGAnAeVSF4GUQteThUFw%
3D%3D&Unitslocation%5Bunitid%5D=&Unitslocation%5Bunitid%5D%5B%5D=9
输出始终作为尝试
后的字符串传递echo json_encode($model->unitid);
在控制器上它返回一个字符串而不是一个整数
["5"]
如何将($ model-&gt; unitid)转换为post params的整数
答案 0 :(得分:1)
只需使用
$model->unitid = (int) $model->unitid;
多数人。