2

私はyiiが初めてです。カスタムの yii オート コンプリートを作成する必要があります。CJuiAutocomplete があることは知っていましたが、独自のカスタム オート コンプリートを実装する必要があります。誰でも私を案内したり、カスタムオートコンプリートテキストフィールドの開発を手伝ってくれたりできますか? テキストフィールドに名前を表示しながらIDを取得します。

前もって感謝します

4

2 に答える 2

5

これがサイトコントローラーのアクションです...

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>
于 2013-01-08T01:02:46.567 に答える
0

この状態なので

array('somecolumn'=>$term)

完全な文字列を記述した場合にのみ結果が表示されます。たとえば、['コーヒー', 'ケーキ'] があります。検索ボックスに入力すると、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 などの結果が表示されます。

于 2014-08-14T17:22:36.507 に答える