使用模型保存 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(); ?>
  1. 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;

就这些了。