如何在yii中创建自定义自动填充文本字段

我是yii的新手。 我需要编写自定义yii自动完成。我知道CJuiAutocomplete就在那里。但我需要实现自己的自定义自动完成。 任何人都可以指导我或帮助我开发自定义自动填充文本字段。 在文本字段中显示名称时获取id。

提前致谢

这是站点控制器中的一个动作……

public function actionAutoComplete($term){ $query = Yourmodel::model()->findallbyattributes( array('somecolumn'=>$term)); $list = array(); foreach($query as $q){ $data['value']= $q['id']; $data['label']= $q['name']; $list[]= $data; unset($data); } echo json_encode($list); } 

这是您视图中的搜索表单:

 $form=$this->beginWidget('CActiveForm', array( 'id'=>'searchform', 'enableAjaxValidation'=>false, 'action' => '/' )); ?> 
widget('zii.widgets.jui.CJuiAutoComplete', array( 'name'=>'searchbox', 'value'=>'', 'source'=>CController::createUrl('/site/autoComplete'), 'options'=>array( 'showAnim'=>'fold', 'minLength'=>'2', 'select'=>'js:function( event, ui ) { $("#searchbox").val( ui.item.label ); $("#selectedvalue").val( ui.item.value ); return false; }', ), 'htmlOptions'=>array( 'onfocus' => 'js: this.value = null; $("#searchbox").val(null); $("#selectedvalue").val(null);', 'class' => 'input-xxlarge search-query', 'placeholder' => "Search...", ), )); echo ''; ?>
endWidget(); ?>

因为这种情况

 array('somecolumn'=>$term) 

只有在你写完整字符串时它才会显示结果。 例如,你有[‘咖啡’,’蛋糕’]。 当您在搜索框中键入时,它不会显示coff,cof,co,ca,cak等的结果。只有在您输入完整的单词咖啡时才显示结果,您将得到[‘咖啡’]作为结果。

所以你需要这样的东西:

 $match = $_GET['term']; $tags = Tags::model()->findAll( 'tag_name LIKE :match', array(':match' => "%$match%") ); 

这将显示coff,cof,co,ca,cak等的结果。