Yii:自定义 CAutoComplete 的结果
Posted
技术标签:
【中文标题】Yii:自定义 CAutoComplete 的结果【英文标题】:Yii: Customize the results of CAutoComplete 【发布时间】:2010-12-27 18:11:58 【问题描述】:我需要使用 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>
带边框)。我该怎么做?
谢谢。
【问题讨论】:
您尝试使用标记而不是 CSS 的任何充分理由? 关于如何使用 CSS 做的任何好的建议? :-) 【参考方案1】:你不能这样做吗?
<?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';
....
?>
然后在客户端检查这个字符串,当你遇到 ""Hey this is the delimiter" 时用你的分隔符替换它。
【讨论】:
以上是关于Yii:自定义 CAutoComplete 的结果的主要内容,如果未能解决你的问题,请参考以下文章