2011-10-22 55 views
0

我有以下情况,我只想在用户搜索某些内容时显示搜索结果。当然,当我访问我的搜索页面时,所有的搜索结果都会显示出来,如果用户搜索某个特定的东西,它会相应地显示出来。以下是我的搜索控制器中的代码。我为它分页添加了分页。如何仅在cakephp中需要时显示搜索结果

function simple_search() { 

     $this->User->recursive = 1; 
     $this->Passion->recursive = 1; 
     $this->User->unBindModel(array('hasMany' => array('Topic','Post')),false); 

     $conditions = array(); 
     $options; 

     $or_conditions = array(); 
     $final_conditions = array(); 
     $search_fields = array('User.firstName', 'User.lastName', 'User.email', 'User.displayName'); //fields to search 'Video.tags','Video.desc' 
     $this->layout = "mainLayout"; 

     $value=''; 

     if(!empty($this->params["url"]["value"])){ 
      $value = $this->params["url"]["value"]; 
     } 

     $searches = explode(" ", $value); 
     foreach ($search_fields as $f) { 
      array_push($conditions, array("$f Like" => "$value%")); 
      for ($i = 0; $i < count($searches); $i++) { 
       if ($searches[$i] != "") { 
        array_push($conditions, array("$f Like" => "$searches[$i]%")); 
       } 
      } 

      array_push($or_conditions, array('OR' => $conditions)); 
      $conditions = array(); 
     } 
     $final_conditions = array('OR' => $or_conditions); 
     $users = $this->User->find('all', $final_conditions); 
     $this->paginate = array(
      'conditions' => $final_conditions, 
      'limit' => 10 
     ); 
     $users = $this->paginate('User'); 
     $this->set('search_fields', $users); 
    } 

回答

0

删除那个find('all'),你在那之后覆盖$ users。

if(empty($this->params["url"]["value"]))$users = array(); 
else $users = $this->paginate('User'); 
+0

你的意思是删除那个find('all')?删除以下代码:$ users = $ this-> User-> find('all',$ final_conditions); –

+0

我遇到以下错误未定义的属性:View :: $ Paginator [APP \ views \ searches \ simple_search.ctp,第116行] –