Я новичок в yii. Мне нужно написать пользовательский yii auto complete. Я знал, что CJuiAutocomplete есть. Но мне нужно реализовать собственный пользовательский автозаполненный. может ли кто-нибудь мне посоветовать или помочь мне разработать настраиваемое текстовое поле автозаполнения. взяв идентификатор во время отображения имени в текстовом поле.
заранее спасибо
Вот действие в контроллере сайта …
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' => '/' )); ?> <fieldset> <div class="input-append"> <?php echo CHtml::hiddenField('selectedvalue',''); $this->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 '<button class="btn" type="submit">Submit</button>'; ?> </div> </fieldset> <?php $this->endWidget(); ?> </form>
Из-за этого условия
array('somecolumn'=>$term)
он будет показывать результаты, только если вы напишете полную строку. Например, у вас есть ['coffee', 'take']. Когда вы вводите окно поиска, он не будет показывать результаты для coff, cof, co, ca, cak и т. Д., Только покажет результаты, если вы введете полноценный кофе, вы получите ['coffee'].
Поэтому вам нужно что-то вроде:
$match = $_GET['term']; $tags = Tags::model()->findAll( 'tag_name LIKE :match', array(':match' => "%$match%") );
Это покажет результаты для coff, cof, co, ca, cak и т. Д.