如何在 yii2 中使用 select2 小部件选择多个值

Posted

技术标签:

【中文标题】如何在 yii2 中使用 select2 小部件选择多个值【英文标题】:how to select multiple values using select2 widget in yii2 【发布时间】:2018-06-18 03:15:04 【问题描述】:

我在我的项目中使用 select to widget 和 'multiple' => true

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

但是当我选择多个值时会出错

如何使用select2选择多个值??

【问题讨论】:

能否添加您的型号代码? 【参考方案1】:

在您的模型中更改您的规则添加行:

public function rules()
    
        return [
....
    ['task','safe']
....
               ] 
    

并从“字符串”行规则中删除任务! 在下一步中,您必须将此 ID 存储在多对多表中,或者将该链接字符串分隔符存储在单列中。

在你的控制器中添加这个:

public function actionCreate()
    

....
 if ($model->load(Yii::$app->request->post()))   
....
$task_string = "";
foreach($model->task as $singl_task)
  $task_string.= $singl_task."-";

$model->task = $task_string;

【讨论】:

我希望选择的值是字符串,怎么做 @kiamoz,为什么不使用 implode(','yii\helpers\ArrayHelper::getValue($model-&gt;task)) 并摆脱 foreach ;) @Goli 你可以使用 implode ,但是我的代码可以让你增加更多的灵活性,并且对所有的任务做更多的事情。比如在每个任务上添加一些计算...... @MuhammadOmerAslam chekc 以上

以上是关于如何在 yii2 中使用 select2 小部件选择多个值的主要内容,如果未能解决你的问题,请参考以下文章

Yii2:如何禁用或只读 Select2 小部件?

在 Yii2 Kartik Select2 小部件中,如何对选择事件进行 ajax 调用?

Yii2 在“select2”小部件上需要验证规则

如果我使用 select2 小部件,如何发布表中记录的实际主键而不是 php Yii2 中的数组索引?

从 javascript 设置 yii2 select2 小部件的值

如何在 Yii 2.0.43 版和 bootstrap4 中启用 select2 小部件的搜索控件