这篇文章给大家介绍使用yii2组件怎么实现一个下拉框带搜索功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
composer require kartik-v/yii2-widget-select2 “@dev"
特别说明,因为这里安装的开发版本,也就是开发版本,不稳定版本,如果你的项目是git托管的,作曲家安装下来之后这里记得删掉\供应商\ kartik-v \ yii2-widget-select2目录下的。git文件,不然你提交不上去的哦
等他个大概5分钟的样子差不多了,安装就好了,然后我们就可以像下面一样开始使用了
//如果你的表单是ActiveForm,请使用 use 8月\ select2 \ select2;,//$ data是键值对数组哦,key-value ,下面所声明的所有美元数据均为键值对数组,以该数组为例, data 美元;=,(2,=祝辞,& # 39;部件# 39;,,3,=祝辞,& # 39;dropdownlist # 39;,, 4,=祝辞,& # 39;yii2& # 39;];, echo 形成→美元字段(模型中,美元,& # 39;标题# 39;)→部件(Select2::类名(),(, & # 39;才能数据# 39;,=祝辞,数据,美元, & # 39;才能选择# 39;,=祝辞,[& # 39;占位符# 39;,=祝辞,& # 39;请选择,…& # 39;),, ]);
//如果你的表单是非ActiveForm,可以参考下面的 use 8月\ select2 \ select2;, echo Select2::小部件([,& # 39;名字# 39;,=祝辞,& # 39;标题# 39;,, & # 39;才能数据# 39;,=祝辞,数据,美元, & # 39;才能选择# 39;,=祝辞,[& # 39;占位符# 39;,=祝辞,& # 39;请选择……& # 39;], ]);
非ActiveFomr生成的更新数据的时候就需要默认选中,好办,加值值即可
use 8月\ select2 \ select2;, Select2::小部件([echo & # 39;才能名字# 39;,=祝辞,& # 39;标题# 39;,, & # 39;才能值# 39;,=祝辞,2, & # 39;才能数据# 39;,=祝辞,数据,美元, & # 39;才能选择# 39;,=祝辞,[& # 39;占位符# 39;,=祝辞,& # 39;请选择……& # 39;], ]);
但是如果你的表单是ActiveForm生成的,但是往往字段不是表字段怎么办呢?更好办啦,以上面的为例,你只需要指定模型→美元title=[& # 39; title1& # 39; & # 39; title2& # 39;];即可
基本上就是这么回事,我们也就很简单的实现了下拉选择并可搜索的功能。但是,咋又冒出来了个但是呢,但是刚才是我们想的,事实是这样的,小编妹子说了,你这能不能操作再方便点,一次选择一个太麻烦了,能不能多选呀?为了实现你那ZB的伎俩,好吧,确实也简单,一行代码解决掉。
echo 美元形式→字段(模型中,美元,& # 39;标题# 39;)→部件(Select2::类名(),(, & # 39;才能数据# 39;,=祝辞,数据,美元, & # 39;才能选择# 39;,=祝辞,[& # 39;多个# 39;,=祝辞,真的,,& # 39;占位符# 39;,=祝辞,& # 39;请选择,…& # 39;),, ]); #多选的添加默认值同上
眼尖的注意到了,加了一个多个选项。非ActiveForm生成的表单操作一致。
我们看看效果是怎么样的。
到此,我们已经可以唱者NB的歌欢快的回家了
等等,好像忘记什么了,有眼尖的小伙伴可能注意到了,美元的数据都是我们预先准备好的数据,你说这数据量万一很大的情况,不搞死人了嘛,那接下来让我们看看如何实现异步搜索结果。举一个例子,我们现在要查询某一个书的名,但是我们的书的数据量大概有100 w,很简单,这需要我们根据你的搜索结果异步获取下拉框里面的数据。未完待续,晚点做进一步说明。
来,上家伙,我们来看看如何使用异步搜索功能,工作中尤其是进行关联数据的时候其用途更是大大的,方便性嘛,看看就知道了,好用的不得了。
基本的使用方法就不多说了,请看官们移步上文,我们这里继续接着大侃大论。
我们先来预览下异步搜索的效果图
注意哦,图中标记的部分是我们通过输入的关键词搜索出来的,异步这效果呢,我截图上来估计你也看不到效果,动图我还不会,不知道怎么搞的,要说具体是啥效果吗,相信大多数人也是明白滴,这就叫做只可意会,言谈不出来。好了,我们干脆直接上代码看具体操作吧。
//,视图层 use 8月\ select2 \ select2; use yii \ web \ JsExpression; php & lt; ? echo 才能;形成→美元字段(模型中,美元,& # 39;标题# 39;)→部件(Select2::类名(),( ,,,& # 39;选项# 39;,=祝辞,[& # 39;占位符# 39;,=祝辞,& # 39;请输入标题名称,…& # 39;], ,,,& # 39;pluginOptions& # 39;,=祝辞,( ,,,,,& # 39;占位符# 39;,=祝辞,& # 39;search ……& # 39; ,,,,,& # 39;allowClear& # 39;,=祝辞,真的, ,,,,,& # 39;语言# 39;,=祝辞,( ,,,,,,,& # 39;errorLoading& # 39;,=祝辞,new JsExpression (“function  (), {, return & # 39;等待……& # 39;,,}“), ,,,,,, ,,,,,& # 39;ajax # 39;,=祝辞,( ,,,,,,,& # 39;url # 39;,=祝辞,& # 39;这里是提供数据源的接口& # 39;, ,,,,,,,& # 39;数据类型# 39;,=祝辞,& # 39;json # 39; ,,,,,,,& # 39;数据# 39;,=祝辞,new JsExpression(& # 39;函数(参数),{{问:params.term}, return ,} & # 39;) ,,,,,, ,,,,,& # 39;escapeMarkup& # 39;,=祝辞,new JsExpression (& # 39; function (标记),{,return 标记,}& # 39;), ,,,,,& # 39;templateResult& # 39;,=祝辞,new JsExpression(& # 39;函数(res), {, return res.text,} & # 39;), ,,,,,& # 39;templateSelection& # 39;,=祝辞,new JsExpression (& # 39; function (res), {, return res.text,} & # 39;), null null null null null null null null null null null null null null null null null null null null null null使用yii2组件怎么实现一个下拉框带搜索功能