使用模型保存kartik select2小部件数据

时间:2016-07-21 06:32:29

标签: javascript php yii2 yii-extensions

使用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);
     ?>
    
  2. 这会在控制台上生成此输出(对于序列化表单输出

    _csrf=TGMzaDRINnEHFgM5RjIPICc2bBoZAWZAOBIGAnAeVSF4GUQteThUFw%
    3D%3D&Unitslocation%5Bunitid%5D=&Unitslocation%5Bunitid%5D%5B%5D=9
    

    输出始终作为尝试

    后的字符串传递
    echo json_encode($model->unitid);
    

    在控制器上它返回一个字符串而不是一个整数

    ["5"]
    

    如何将($ model-&gt; unitid)转换为post params的整数

1 个答案:

答案 0 :(得分:1)

只需使用

$model->unitid = (int) $model->unitid;

多数人。