使用yii2组件怎么实现一个下拉框带搜索功能

  介绍

这篇文章给大家介绍使用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生成的表单操作一致。

我们看看效果是怎么样的。

使用yii2组件怎么实现一个下拉框带搜索功能

到此,我们已经可以唱者NB的歌欢快的回家了

等等,好像忘记什么了,有眼尖的小伙伴可能注意到了,美元的数据都是我们预先准备好的数据,你说这数据量万一很大的情况,不搞死人了嘛,那接下来让我们看看如何实现异步搜索结果。举一个例子,我们现在要查询某一个书的名,但是我们的书的数据量大概有100 w,很简单,这需要我们根据你的搜索结果异步获取下拉框里面的数据。未完待续,晚点做进一步说明。

来,上家伙,我们来看看如何使用异步搜索功能,工作中尤其是进行关联数据的时候其用途更是大大的,方便性嘛,看看就知道了,好用的不得了。

基本的使用方法就不多说了,请看官们移步上文,我们这里继续接着大侃大论。

我们先来预览下异步搜索的效果图

使用yii2组件怎么实现一个下拉框带搜索功能

注意哦,图中标记的部分是我们通过输入的关键词搜索出来的,异步这效果呢,我截图上来估计你也看不到效果,动图我还不会,不知道怎么搞的,要说具体是啥效果吗,相信大多数人也是明白滴,这就叫做只可意会,言谈不出来。好了,我们干脆直接上代码看具体操作吧。

//,视图层   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组件怎么实现一个下拉框带搜索功能