Как отображать результаты поиска только при необходимости в cakephp - PullRequest
0 голосов
/ 22 октября 2011

У меня следующая ситуация, когда я хочу отображать результаты поиска только тогда, когда пользователь что-то ищет. В настоящее время, когда я захожу на свою страницу поиска, отображаются все результаты поиска, и если пользователь ищет определенную вещь, он отображает это соответственно. Ниже приведен код в моем контроллере поиска. Я добавил нумерацию страниц для разбивки на страницы.

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);
    }

1 Ответ

0 голосов
/ 22 октября 2011

удалите эту находку ('all'), вы переписываете $ users сразу после этого.

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