使用模型保存 kartik select2 小部件数据
Saving kartik select2 widget data with a model
我正在使用 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);
在控制器上它 returns 一个字符串而不是一个整数
即
["5"]
如何将 post 参数的 ($model->unitid) 转换为整数
只需使用
$model->unitid = (int) $model->unitid;
就这些了。
我正在使用 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);
在控制器上它 returns 一个字符串而不是一个整数 即
["5"]
如何将 post 参数的 ($model->unitid) 转换为整数
只需使用
$model->unitid = (int) $model->unitid;
就这些了。