yii框架的下拉框多选,设置默认值等(dropDownList)

一、前言

      根据需求,需要更改下拉框为多选框。本来以为只是很简单的东西,但是实际修改起来却碰到不少bug,多选框无法选中,给多选框赋默认值等。这里记录一下

二、修改单选下拉框为多选下拉框

 echo $form->field($model, 'project_id', [
        'inputOptions' => [
            'multiple' => 'multiple',//这里加上
            'style'=>'width:100%;',
            'size'=>10
        ],
    ])->dropDownList(数组);

三、多选下拉框无法选中的问题

      明明这个插件已经显示是多选框了,但是我每次多选的时候,他都会自动取消,始终都是保持单选的状态。后来一直找问题,终于发现,原因是yii自带的activeForm.js会自动验证,因为默认是选一个,所以在选两个的时候会报错。

      既然知道原因了,那解决方案也很简单,就是禁用activeForm.js (yii/assets/activeForm.js),因为博主的这个页面,禁用掉activeForm.js也没问题,所以博主才禁用的。大家根据自己的实际情况灵活选择吧。

 $form = ActiveForm::begin([
       			 'id' => $model->formName(),
       		 	'enableAjaxValidation' => false,
       			 'enableClientScript' => false,  //禁用yii自带的activeForm.js
        			'enableClientValidation' => false, //禁用yii自带的activeForm.js

参考链接:https://www.yiichina.com/question/229

禁用之后,我们的多选框就能正常多选,传值了。打印传值方式为:

array(5) {
  					[0]=>
 					 string(2) "11"
  					[1]=>
 					 string(2) "12"
 					 [2]=>
  					string(1) "5"
  					[3]=>
  					string(1) "2"
  					[4]=>
  					string(1) "1"
					}

四、给下拉框默认值

      这部分博主在网上百度了很久,刚开始很多人都说设置prompt就可以了,后来才发现,这个prompt只是设置下拉框的默认头部文字,并不是我们想要的。我们想要的是,下拉框的有些值从一开始就是被selected的。

1、通过$model赋值

$model->name = 2;   //把value = 2的设为默认值,这里的name必须和下面的field里面的name保持一样
 echo $form->field($model, 'name', [
        'inputOptions' => [
            'multiple' => 'multiple',//这里加上
            'style'=>'width:100%;',
            'size'=>10
        ],
    ])->dropDownList(数组);

2、赋多个默认值

echo $form->field($model, 'project_id', [
      					  'inputOptions' => [
           					 'multiple' => 'multiple',//这里加上,成为多选框
           					 'style'=>'width:100%;',
      					  ],
  				  ])->dropDownList(数组,['options' => ['3' => ['selected' => 'selected'],'4'=>['selected'=>'selected']],]);

这里是给了个options参数,里面可以是个数组,对应的就是我们要给默认值的选项。
效果如图:
在这里插入图片描述
这样,我们的下拉框就自带的有默认值了,挺方便的,个人更推荐第二种吧,给多个默认值,看着也顺眼些。

end

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值