真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用yii2組件怎么實(shí)現(xiàn)一個(gè)下拉框帶搜索功能-創(chuàng)新互聯(lián)

這篇文章給大家介紹使用yii2組件怎么實(shí)現(xiàn)一個(gè)下拉框帶搜索功能,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

目前累計(jì)服務(wù)客戶(hù)上千多家,積累了豐富的產(chǎn)品開(kāi)發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹(shù)立企業(yè)形象,為客戶(hù)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)公司始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶(hù)形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶(hù)提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。
composer require kartik-v/yii2-widget-select2 "@dev"

特別說(shuō)明,因?yàn)檫@里安裝的dev版本,也就是開(kāi)發(fā)版本,不穩(wěn)定版本,如果你的項(xiàng)目是git托管的,composer安裝下來(lái)之后這里記得刪掉 \vendor\kartik-v\yii2-widget-select2目錄下的.git文件,不然你提交不上去的哦
等他個(gè)大概5分鐘的樣子差不多了,安裝就好了,然后我們就可以像下面一樣開(kāi)始使用了

//如果你的表單是ActiveForm,請(qǐng)使用

use kartik\select2\Select2; 
//$data是鍵值對(duì)數(shù)組哦,key-value ,下面所聲明的所有$data均為鍵值對(duì)數(shù)組,以該數(shù)組為例 
$data = [2 => 'widget', 3 => 'dropDownList', 4 => 'yii2']; 
echo $form->field($model, 'title')->widget(Select2::classname(), [ 
  'data' => $data, 
  'options' => ['placeholder' => '請(qǐng)選擇 ...'], 
]);
//如果你的表單是非ActiveForm,可以參考下面的

use kartik\select2\Select2; 
echo Select2::widget([ 'name' => 'title', 
  'data' => $data, 
  'options' => ['placeholder' => '請(qǐng)選擇...'] 
]);

非ActiveFomr生成的更新數(shù)據(jù)的時(shí)候就需要默認(rèn)選中,好辦,加value值即可

use kartik\select2\Select2; 
echo Select2::widget([ 
  'name' => 'title', 
  'value' => 2, 
  'data' => $data, 
  'options' => ['placeholder' => '請(qǐng)選擇...'] 
]);

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

基本上就是這么回事,我們也就很簡(jiǎn)單的實(shí)現(xiàn)了下拉選擇并可搜索的功能。但是,咋又冒出來(lái)了個(gè)但是呢,但是剛才是我們想的,事實(shí)是這樣的,小編妹子說(shuō)了,你這能不能操作再方便點(diǎn),一次選擇一個(gè)太麻煩了,能不能多選呀?為了實(shí)現(xiàn)你那ZB的伎倆,好吧,確實(shí)也簡(jiǎn)單,一行代碼解決掉。

echo $form->field($model, 'title')->widget(Select2::classname(), [ 
  'data' => $data, 
  'options' => ['multiple' => true, 'placeholder' => '請(qǐng)選擇 ...'], 
]);
#多選的添加默認(rèn)值同上

眼尖的注意到了,加了一個(gè)multiple選項(xiàng)。非ActiveForm生成的表單操作一致。

我們看看效果是怎么樣的。

使用yii2組件怎么實(shí)現(xiàn)一個(gè)下拉框帶搜索功能

到此,我們已經(jīng)可以唱者NB的歌歡快的回家了

等等,好像忘記什么了,有眼尖的小伙伴可能注意到了,$data都是我們預(yù)先準(zhǔn)備好的數(shù)據(jù),你說(shuō)這數(shù)據(jù)量萬(wàn)一很大的情況,不搞死人了嘛,那接下來(lái)讓我們看看如何實(shí)現(xiàn)異步搜索結(jié)果。舉一個(gè)例子,我們現(xiàn)在要查詢(xún)某一個(gè)書(shū)名,但是我們的書(shū)的數(shù)據(jù)量大概有100W,很簡(jiǎn)單,這需要我們根據(jù)你的搜索結(jié)果異步獲取下拉框里面的數(shù)據(jù)。未完待續(xù),晚點(diǎn)做進(jìn)一步說(shuō)明。

來(lái),上家伙,我們來(lái)看看如何使用異步搜索功能,工作中尤其是進(jìn)行關(guān)聯(lián)數(shù)據(jù)的時(shí)候其用途更是大大的,方便性嘛,看看就知道了,好用的不得了。

基本的使用方法就不多說(shuō)了,請(qǐng)看官們移步上文,我們這里繼續(xù)接著大侃大論。

我們先來(lái)預(yù)覽下異步搜索的效果圖

使用yii2組件怎么實(shí)現(xiàn)一個(gè)下拉框帶搜索功能

注意哦,圖中標(biāo)記的部分是我們通過(guò)輸入的關(guān)鍵詞搜索出來(lái)的,異步這效果呢,我截圖上來(lái)估計(jì)你也看不到效果,動(dòng)圖我還不會(huì),不知道怎么搞的,要說(shuō)具體是啥效果嗎,相信大多數(shù)人也是明白滴,這就叫做只可意會(huì),言談不出來(lái)。好了,我們干脆直接上代碼看具體操作吧。

// view層
use kartik\select2\Select2;
use yii\web\JsExpression;

field($model, 'title')->widget(Select2::classname(), [
    'options' => ['placeholder' => '請(qǐng)輸入標(biāo)題名稱(chēng) ...'],
    'pluginOptions' => [
      'placeholder' => 'search ...',
      'allowClear' => true,
      'language' => [
        'errorLoading' => new JsExpression("function () { return 'Waiting...'; }"),
      ],
      'ajax' => [
        'url' => '這里是提供數(shù)據(jù)源的接口',
        '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; }'),
    ],
  ]);
?>

上面的代碼可直接復(fù)制使用,唯獨(dú)需要修改的就是ajax里對(duì)應(yīng)的url地址。下面我們看看controller層代碼是怎么提供數(shù)據(jù)的。


//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;
}

關(guān)于使用yii2組件怎么實(shí)現(xiàn)一個(gè)下拉框帶搜索功能就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)站標(biāo)題:使用yii2組件怎么實(shí)現(xiàn)一個(gè)下拉框帶搜索功能-創(chuàng)新互聯(lián)
本文地址:http://weahome.cn/article/iiegd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部