如何只在cakephp需要时显示搜索结果?
问题描述:
我有以下情况,我想只显示搜索结果,当用户搜索的东西。当然,当我访问我的搜索页面时,所有的搜索结果都会显示出来,如果用户搜索某个特定的东西,它会相应地显示出来。以下是我的搜索控制器中的代码。我为它分页添加了分页。 功能simple_search(){如何只在cakephp需要时显示搜索结果?
$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);
}
答
你为什么要这么做查找( '全部')?几行后paginate()覆盖结果。
空($这个 - > PARAMS [“链接”] [“值”]检查并只有在情况下,它不是空的设定结果的看法。
遵循CakePHP的和使用的编码标准。驼峰格式的变量名,而不是下划线http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html
而且你可能想看看这个 https://github.com/CakeDC/search
而在这(显示找到俗使用搜索插件) https://github.com/CakeDC/users/blob/master/controllers/users_controller.php#L316 的https:// github上。 COM/CakeDC /users/blob/master/models/user.php#L557