【问题标题】:add checkbox in select2 to dropdown list in yii2将 select2 中的复选框添加到 yii2 的下拉列表中
【发布时间】:2017-12-27 12:58:34
【问题描述】:

这是下拉列表的代码.. 但是当我选择多个值时,它会给出验证错误“任务必须是字符串”

如何保存多个值(数组)?

   <?php echo $form->field($model, 'task')->widget(Select2::classname(), [
                            'data' => $companiesList,
                            'options' => ['placeholder' => 'Select company...','multiple' => true],
                            'pluginOptions' => ['allowClear' => true,],
                        ]);?>

如何为列表中的每个值指定复选框?

【问题讨论】:

  • 在模型规则集[['task'], 'safe'] 中来自[['task'], 'string']
  • PHP 警告 – yii\base\ErrorException quoted_printable_encode() 期望参数 1 为字符串,给定数组
  • quoted_printable_encode 来自您的错误规则 arr 将所有规则 arr 粘贴到此处以提供更多帮助

标签: yii2 jquery-select2


【解决方案1】:

你必须在多对多表中保存多个值,

将规则从骷髅先生的答案更改为[['task'], 'safe'] 后,您必须像这样获取所有数据:

foreach ( $model->task as $single_task){

$task = new _many_to_many_model();
$task->side_1_id = single_task;
$task->side_2_id = $model->id;
$task->save();

}

在此评论之后:

所有选择的值都应该放在单列中

您不需要使用多对多! 我使用“-”作为分隔符,

$all_taskes = "";
    foreach ( $model->task as $single_task){

    $all_taskes .= single_task."-";

    }

$model->task = all_taskes;

【讨论】:

  • 在 $model->save() 之后的控制器中,但重要的是要在哪里保存多个数据?并在单列或多对多中告诉我?
  • 所有选定的值都应该放在单列中
  • 好吧,让我们看看我的下一个编辑来回答并放入你的控制器中......忘记多对多......
  • 检查一下,看看第 2 部分
  • error...... PHP 警告 – yii\base\ErrorException quoted_printable_encode() 期望参数 1 为字符串,给定数组
【解决方案2】:

你好,

       $model->save();
       foreach ($model->task as $cat) {
    
                    $m = new \common\models\_many_to_many_model();
                    $m->ads_id = $model->id; // change in to yorr base model ID and use it's put after $model->save
                    $m->category_id = $cat; // category_id is your many to many model filed id 
                    $m->save();
       }

【讨论】:

    猜你喜欢
    • 2022-01-28
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2019-10-20
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多