排序和分页我建立一个自定义关键字搜索就是利用建立的关系表
问题描述:
我最近开始建造使用Yii 1.1.x的排序和分页我建立一个自定义关键字搜索就是利用建立的关系表
搜索工程100%的自定义关键字搜索后无法正常工作。但只要我在管理视图中对列进行排序并使用分页,搜索就会丢失,并显示所有结果。因此,对于其他词汇,它不会进行过滤,只会显示搜索结果。它以某种方式重置它。
在我的控制我的代码如下
$builder=Messages::model()->getCommandBuilder();
//Table1 Columns
$columns1=array('0'=>'id','1'=>'to','2'=>'from','3'=>'message','4'=>'error_code','5'=>'date_send');
//Table 2 Columns
$columns2=array('0'=>'username');
//building the Keywords
$keywords = explode(' ',$_REQUEST['search']);
$count=0;
foreach($keywords as $key){
$kw[$count]=$key;
++$count;
}
$keywords=$kw;
$condition1=$builder->createSearchCondition(Messages::model()->tableName(),$columns1,$keywords,$prefix='t.');
$condition2=$builder->createSearchCondition(Users::model()->tableName(),$columns2,$keywords);
$condition = substr($condition1,0,-1) . " OR ".substr($condition2,1);
$condition = str_replace('AND','OR',$condition);
$dataProvider=new CActiveDataProvider('Messages', array(
'pagination'=>array(
'pageSize'=>self::PAGE_SIZE,
),
'criteria'=>array(
'with'=>'users',
'together'=>true,
'joinType'=>'LEFT JOIN',
'condition'=>$condition,
),
'sort'=>$sort,
));
$this->render('admin',array(
'dataProvider'=>$dataProvider,'keywords'=>implode(' ',$keywords),'sort'=>$sort
));
和我的看法是这样的
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
'id',
array(
'name'=>'user_id',
'value'=>'CHtml::encode(Users::model()->getReseller($data->user_id))',
'visible'=>Yii::app()->user->checkAccess('poweradministrator')
),
'to',
'from',
'message',
/*
'date_send',
*/
array(
'name'=>'error_code',
'value'=>'CHtml::encode($data->status($data->error_code))',
),
array(
'class'=>'CButtonColumn',
'template'=>'{view} {delete}',
),
),
));
我真的不知道什么做了,因为我非常失落,任何帮助将hihsly赞赏
答
您可以为您的搜索条件设置用户状态,并在控制器加载视图时测试状态。
东西沿
if(isset($_REQUEST['search'])){
$keywords = explode(' ',$_REQUEST['search']);
Yii::app()->user->setState('keywords',$keywords);
}
else if(Yii::app()->user->hasState('keywords')){
$keywords=Yii::app()->user->getState('keywords');
}
这里的缺点的线是关键字状态将保持对会话的长度。
答
这就是为什么我不喜欢这些框架。在原始PHP中,我只需要使用$link=http_build_query($_GET);
,然后使用此链接进行分页和排序。但是你必须找到一种方法来使用你的框架思想来做同样的事情。我敢打赌,他们有这样一个普通任务的例子。