排序和分页我建立一个自定义关键字搜索就是利用建立的关系表

问题描述:

我最近开始建造使用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);,然后使用此链接进行分页和排序。但是你必须找到一种方法来使用你的框架思想来做同样的事情。我敢打赌,他们有这样一个普通任务的例子。