【问题标题】:select2 kartik yii2 posting null value issueselect2 kartik yii2 发布空值问题
【发布时间】:2016-01-25 06:30:26
【问题描述】:

我在 yii2 中使用 Kartik Select2 小部件,我在视图中使用了该小部件,并且我已经定义了要在选择下拉列表中显示的数组,但是当我选择一些项目并发布表单时,它总是将空值发布到我的控制器。在我看来,这是我的 ActiveForm:

<?php
$form = ActiveForm::begin([
  'options' => ['enctype' => 'multipart/form-data'],
]);
?>

<?= $form->field($model,'title')->textinput(); ?>
<?= $form->field($model,'blog')->textarea(); ?>
<?= $form->field($model,'imageFile')->fileinput(); ?>

<?=
$form->field($model, 'tag')->widget(Select2::classname(), [
  'data' => $tags,
  'options' => ['placeholder' => '...تگ ها را انتخاب کنید'],
  'pluginOptions' => [
    'allowClear' => true,
    'multiple' => true,
  ],
]);
?>

<?= Html::SubmitButton('ارسال',['class' => 'btn btn-success green']); ?>

<?php ActiveForm::end(); ?>

这是我的控制器,当我使用 var_dump 检查从 select2 小部件发布的值时,它始终为空:

public function actionInsertBlog()
  {    
    $model = new Blog();
    $tagModel = new Tag();

    if ($model->load(Yii::$app->request->post())) {
      var_dump($model->tag);
      die();
      if ($model->insertBlog()) {
        Yii::$app->response->redirect('?r=blog/index',301)->send();
      } else {
        Yii::$app->response->redirect('?r=blog/insert-blog',301)->send();
      }
    } else {
      $tags = ArrayHelper::map($tagModel->find()->asArray()->all(),'id','tag');
      return $this->render('insert',['model' => $model , 'tagModel' => $tagModel , 'tags' => $tags]);
    }
  }

【问题讨论】:

  • 请向我们展示您的示范规则。 PS:你应该使用Controller::redirect()的路由。

标签: php yii widget yii2 yii-extensions


【解决方案1】:

如果您在控制器中获得空值,那么主要原因是模型规则。根据规则加载功能设置模型规则中存在的模型属性,可能是您的模型规则中不存在标签属性。这就是为什么它会为空,将“标签属性作为安全规则”

[['tag'], 'safe'],

【讨论】:

  • 那真是太好了。谢谢
猜你喜欢
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 2016-07-14
相关资源
最近更新 更多