yii2组件之下拉框带搜索功能的示例代码(yii-select2)

简单的小功能,但是用起来还是蛮爽的。分享出来让更多的人有更快的开发效率,开开心心快乐编程。

如果你还没有使用过composer,你可就out了,看我的教程分享,composer简直就是必备神奇有木有。都说到这个点上了,我们赶紧使用composer进行安装吧。

不急,先来看看效果图是啥样的,不然都没心情没欲望看下去。

啥玩意,不感兴趣?继续看嘛,看完再操作一边才能觉得好在哪里。

有木有感觉很帅气,当然啦,远远不止,还很上档次用起来效果也是杠杠的有木有。

好了好了,抓紧时间安装,不然聊起来真是没完没了。

composer require kartik-v/yii2-widget-select2 "@dev"

特别说明,因为这里安装的dev版本,也就是开发版本,不稳定版本,如果你的项目是git托管的,composer安装下来之后这里记得删掉 \vendor\kartik-v\yii2-widget-select2目录下的.git文件,不然你提交不上去的哦
等他个大概5分钟的样子差不多了,安装就好了,然后我们就可以像下面一样开始使用了

//如果你的表单是ActiveForm,请使用 use kartik\select2\Select2; //$data是键值对数组哦,key-value ,下面所声明的所有$data均为键值对数组,以该数组为例 $data = [2 => 'widget', 3 => 'dropDownList', 4 => 'yii2']; echo $form->field($model, 'title')->widget(Select2::classname(), [ 'data' => $data, 'options' => ['placeholder' => '请选择 ...'], ]); //如果你的表单是非ActiveForm,可以参考下面的 use kartik\select2\Select2; echo Select2::widget([ 'name' => 'title', 'data' => $data, 'options' => ['placeholder' => '请选择...'] ]);

非ActiveFomr生成的更新数据的时候就需要默认选中,好办,加value值即可

use kartik\select2\Select2; echo Select2::widget([ 'name' => 'title', 'value' => 2, 'data' => $data, 'options' => ['placeholder' => '请选择...'] ]);

但是如果你的表单是ActiveForm生成的,但是往往字段不是表字段怎么办呢?更好办啦,以上面的为例,你只需要指定$model->title = ['title1', 'title2'];即可

基本上就是这么回事,我们也就很简单的实现了下拉选择并可搜索的功能。但是,咋又冒出来了个但是呢,但是刚才是我们想的,事实是这样的,小编妹子说了,你这能不能操作再方便点,一次选择一个太麻烦了,能不能多选呀?为了实现你那ZB的伎俩,好吧,确实也简单,一行代码解决掉。

echo $form->field($model, 'title')->widget(Select2::classname(), [ 'data' => $data, 'options' => ['multiple' => true, 'placeholder' => '请选择 ...'], ]); #多选的添加默认值同上

眼尖的注意到了,加了一个multiple选项。非ActiveForm生成的表单操作一致。

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

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

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

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

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

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

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

// view层 use kartik\select2\Select2; use yii\web\JsExpression; <?php echo $form->field($model, 'title')->widget(Select2::classname(), [ 'options' => ['placeholder' => '请输入标题名称 ...'], 'pluginOptions' => [ 'placeholder' => 'search ...', 'allowClear' => true, 'language' => [ 'errorLoading' => new JsExpression("function () { return 'Waiting...'; }"), ], 'ajax' => [ 'url' => '这里是提供数据源的接口', 'dataType' => 'json', 'data' => new JsExpression('function(params) { return {q:params.term}; }') ], 'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 'templateResult' => new JsExpression('function(res) { return res.text; }'), 'templateSelection' => new JsExpression('function (res) { return res.text; }'), ], ]); ?>

上面的代码可直接复制使用,唯独需要修改的就是ajax里对应的url地址。下面我们看看controller层代码是怎么提供数据的。

//controller层 public function actionSearchTitle ($q) { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $out = ['results' => ['id' => '', 'text' => '']]; if (!$q) { return $out; } $data = Article::find() ->select('id, title as text') ->andFilterWhere(['like', 'title', $q]) ->limit(50) ->asArray() ->all(); $out['results'] = array_values($data); return $out; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-10-06 16:00:50

yii2组件之下拉框带搜索功能的示例代码(yii-select2)的相关文章

Bootstrap框架下下拉框select搜索功能_javascript技巧

之前用Easyui框架下做的下拉框选择,虽然可以搜索,但是有诸多的不便:比如,不能模糊匹配,必须按照第一个字母来搜索 心血来潮,想换个框架写后台,然后用Bootstrap搭了个架子,然后两种样式冲突,百度了一把,找到了另一个牛逼的基于Bootstrap下拉框搜索功能的js 不区分大小写,模糊匹配,哈哈,太棒了~~ 具体用法: <script type="text/javascript" src="<%=basePath%>/js/commons/jquery

yii2带搜索功能的下拉框实例详解_php实例

简单的小功能,但是用起来还是蛮爽的.分享出来让更多的人有更快的开发效率,开开心心快乐编程. 如果你还没有使用过composer,你可就out了,看我的教程分享,composer简直就是必备神奇有木有.都说到这个点上了,我们赶紧使用composer进行安装吧. 先给大家展示下效果图: 下面给大家说下具体实现思路: composer require kartik-v/yii2-widget-select2 "@dev" #特别说明,因为这里安装的dev版本,也就是开发版本,不稳定版本,如果

java 自动填写表单之下拉框,复选框的判断及操作

问题描述 java 自动填写表单之下拉框,复选框的判断及操作 我想用java实现一个网页的自动填写功能,例如工商局的工商注册页面的注册,现在我不知道该如何处理下拉选和复选框,现在我能实现按下tab,然后自动填写表单的输入框,再按tab键然后在自动填写下一个输入框,现在我无法判断下一个是输入框,复选框或下拉选,以及之后该如何操作 解决方案 下拉框可以用 SetAttribute("value", "sec"); 这样试试 SetAttribute("sele

jQuery实现下拉框选择图片功能实例_jquery

本文实例讲述了jQuery实现下拉框选择图片功能.分享给大家供大家参考.具体如下: 让下拉框中显示图片,并可选择对应图片,让select下拉框不仅可显示文字,还可以显示图片内容.为了更生动些,这里还加入了jQuery动画效果,当展开Select列表的时候,图片渐变显示.使用了一个jQ插件:imageselect.js,使用效果的朋友可以自己下载吧. 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <head> <title>支持图片选择的jQuery

下拉框和搜索输入框的二三事

下拉框和搜索输入框组合是页面常用的标配之一,是串起独立页面的一种纽带.下拉框和搜索输入框的组合较多出现在行业性比较强的网站或是各种后台系统,而且会在其页面的的重要位置显示,让用户能很容易找到查找产品的入口.撇开其行业内容不谈,下拉框和搜索输入框的组合顺序和其每个独立的下拉框的内部顺序对于是否能快速精确的定位用户想要查找的内容起着至关重要的作用,同时,也将左右用户的操作次数和思考次数. 就简单的独立下拉框而言,其选项顺序不同,对于用户的眼球运动和鼠标移动以及点击次数也会有较大的影响.我们来看图A-

js实现Select下拉框具有输入功能的方法

 这篇文章主要介绍了js实现Select下拉框具有输入功能的方法,实例分析了两种比较常见的实现方法,是非常实用的技巧,需要的朋友可以参考下     本文实例讲述了js实现Select下拉框具有输入功能的方法.分享给大家供大家参考.具体实现方法如下: 实现方法一 代码如下: <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> <TITLE>js实现

js实现Select下拉框具有输入功能的方法_javascript技巧

本文实例讲述了js实现Select下拉框具有输入功能的方法.分享给大家供大家参考.具体实现方法如下: 实现方法一 复制代码 代码如下: <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> <TITLE>js实现可输入的下拉框</TITLE> </HEAD> <BODY> <div style="

Swift开发之下拉刷新数据的功能实现(使用UIRefreshControl)

想要下拉刷新表格数据,上拉加载新数据,网上有许多第三方的实现类. 而如果仅仅需要实现下拉刷新数据的话,那么使用 UIRefreshControl 就足够了,简单有好用.   1,UIRefreshControl 的使用步骤: (1)创建 UIRefreshControl,并设置文字,颜色等信息. (2)将 UIRefreshControl 添加到tableview视图中. (3)给 UIRefreshControl 添加方法,当值改变的时候调用,用于数据请求刷新. (4)请求数据确认完成之后,调

Yii2实现让关联字段支持搜索功能的方法_php实例

本文实例讲述了Yii2实现让关联字段支持搜索功能的方法.分享给大家供大家参考,具体如下: 这里有两张表,表结构如下,companies_compay_id 为外键 yii2advanced.branches表: branch_id:int(11) companies_company_id:int(11) branch_name:varchar(100) branch_address:varchar(255) branch_created_date:datetime branch_status:e