2009-12-17 52 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'; 
      .... 
     } 
    } 
?> 

然后在客户端检查此字符串,当你遇到“”嘿,这是分隔符”与你分离器替换它。