2015-09-06 82 views
0

我想打一個可搜索的下拉列表中警予,在這個環節demo需要的數據從數據庫就像並將其存儲在數據庫中。我知道如何製作一個下拉列表,但我的任務是創建一個可搜索的下拉列表,就像我開始輸入時一樣,下拉列表打開並顯示數據庫中的數據。 我在(包)圖,其中(包項)是在其想要的搜索下拉領域。需要一個可搜索的下拉列表中警予

<?php 
/* @var $this PackageController */ 
/* @var $model Package */ 
/* @var $form BSActiveForm */ 
?> 
<?php $form=$this->beginWidget('bootstrap.widgets.BsActiveForm', array(
    'id'=>'package-form', 
    // Please note: When you enable ajax validation, make sure the corresponding 
    // controller action is handling ajax validation correctly. 
    // There is a call to performAjaxValidation() commented in generated controller code. 
    // See class documentation of CActiveForm for details on this. 
    'enableAjaxValidation'=>false, 
)); ?> 

    <p class="help-block">Fields with <span class="required">*</span> are required.</p> 

    <?php echo $form->errorSummary($model); ?> 

    <?php echo $form->textFieldControlGroup($model,'package_name',array('maxlength'=>45)); ?> 

    <?php echo $form->textFieldControlGroup($model,'package_item',array('maxlength'=>45)); ?> 


    <?php echo $form->textFieldControlGroup($model,'package_detail',array('maxlength'=>45)); ?> 

    <?php echo BsHtml::submitButton('Submit', array('color' => BsHtml::BUTTON_COLOR_PRIMARY)); ?> 

<?php $this->endWidget(); ?> 
+2

試警予的選擇2延伸。 –

回答

0
  • 如果你只是想在autocomplete那麼這可能幫助:

在你看來:

<?php 
echo "<div class='auto-search'>"; 
    $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
     'id'=>'package_item', 
     'name'=>'package_item', 
     'source'=>$this->createUrl('site/suggestItem'), 
     'htmlOptions'=>array(
      'class'=>'package_item', 
      'placeholder'=>"Search package.." 
    ), 
    )); 
echo "</div>"; 
?> 

在你的控制器(在這種情況下siteController)創建新動作:

<?php 
public function actionsuggestItem() 
    { 
     $request = trim($_GET['term']); 
     $data  = array(); 
     if($request != ''){ 
      //your query to database to get package items. 
      $packageModel = Package::model()->findAll("packagename=$request"); 
      foreach($packageModel as $get){ 
       $data[] = $get->packagename; 
      } 
      echo json_encode($data); 
     } 
     Yii::app()->end(); 
    } 
?> 
  • 如果你想同時dropdownautocomplete

那麼你可以使用這個Select2 Extension

在你看來:

<?php $this->widget('ext.select2.ESelect2',array(
     'model'=>$model, 
     'attribute'=>'package_item', 
     'data'=>$model->searchItem(), 
    ); ?> 

在你的模型:

<?php 
    public function searchItem() { 
     $data   = array(); 
     $packageModel = Package::model()->findAll(); 
     foreach($packageModel as $get){ 
      $data[] = $get->packagename; 
     } 
     return $data; 
     Yii::app()->end(); 
    } 
?> 

注意,這些只是例子,根據您的需要修改它們。

+0

如果我想使用選擇2擴展,我想從數據庫中的數據,不像這樣 'data'=> array( 0 =>'Nol', 1 =>'Satu', 2 =>' Dua', –

+0

@UsmanDabayKhan在模型中創建一個函數,並在'data'屬性中調用它。 – Criesto

0
$this->widget('ext.select2.ESelect2',array(
    'name'=>'package_item', 
    'data'=>CHtml::listData(Package::model()->findAll(), 'id', 'package_item'), //the whole available list 
    'htmlOptions'=>array(
     'placeholder'=>' search packge item?', 
    //'options'=>$options, //the selected values 
    'multiple'=>'multiple', 
    'style'=>'width:530px', 
), 
)); 

做到了這一點,現在它的工作。由於god.Drop下創建的,但它是不可搜索,那麼我註釋掉jQuery的,現在它的working.But我的下一個問題是如何將多個值存儲在數據庫中?