2009-12-17 53 views
0

我需要使用CAutoComplete創建下拉列表。一切設置和工作得很好,這是我的動作代碼:Yii:自定義CAutoComplete的結果

<?php 
    public function actionSuggestCharacter() { 
     if(Yii::app()->request->isAjaxRequest && isset($_GET['q'])) { 
      $name = $_GET['q']; 
      $criteria = new CDbCriteria; 
      $criteria->condition='`Character` LIKE :keyword'; 
      $criteria->params=array(':keyword'=>"$name%"); 
      $criteria->limit = 5; 
      $suggestions = zCharacter::model()->findAll($criteria); 
      $returnVal = ''; 
      foreach($suggestions as $suggestion) { 
       $returnVal .= $suggestion->Character."\n"; 
      } 
      if (isset($suggestion)) { 
       echo $returnVal; 
      } 
      $criteria->condition='`Character` LIKE :keyword'; 
      $criteria->params=array(':keyword'=>"%$name%"); 
      $criteria->limit = 5; 
      $suggestions = zCharacter::model()->findAll($criteria); 
      $returnVal = ''; 
      foreach($suggestions as $suggestion) { 
       $returnVal .= $suggestion->Character."\n"; 
      } 
      if (isset($suggestion)) { 
       echo $returnVal; 
      } 
     } 
    } 
?> 

這段代碼的含義是,它顯示了開頭的關鍵字和未來5場比賽的前5場比賽是在關鍵詞任何地方。

例子。比方說,在輸入域「PDD」(其實並不重要,可以是任何文字)的用戶類型,因此通過自動完成返回的結果將類似於:

1. pddtext... 
2. pddtext... 
3. pdd_some_other_text 
4. pdd_text 
5. pdd_text 
1. text_text_pdd 
2. text_pdd_text 
3. etc... 

問題是我需要區分這些通過某種線路(<hr><div>與邊界)兩個塊。我怎樣才能做到這一點?

謝謝。

+0

你爲什麼想用這樣做有什麼好理由標記而不是CSS? – 2009-12-17 22:36:49

+0

有關如何使用CSS的好建議?:-) – Anthony 2009-12-17 23:10:34

回答

2

難道你不能這樣做嗎?

<?php 
    public function actionSuggestCharacter() { 
     if(Yii::app()->request->isAjaxRequest && isset($_GET['q'])) { 
      ... 
      if (isset($suggestion)) { 
       echo $returnVal; 
      } 
      echo "Hey this is the delimiter\n"; 
      $criteria->condition='`Character` LIKE :keyword'; 
      .... 
     } 
    } 
?> 

然後在客戶端檢查此字符串,當你遇到「」嘿,這是分隔符」與你分離器替換它。