【发布时间】:2012-12-01 11:58:52
【问题描述】:
我在我的 CakePHP 项目中设置了一个简单的搜索引擎,看起来像这样:
<?php
echo $this->Form->create("Post", array(
"action" => "search",
"id" => "searchForm"
));
echo $this->Form->input("keyword", array(
"label" => "",
"type" => "search",
"placeholder" => "Recherche..."
));
echo $this->Form->end();
?>
这是控制器:
function search() {
$keyword = $this->request->data;
$keyword = $keyword["Post"]["keyword"];
$cond = array("OR" => array(
"Post.title LIKE '%$keyword%'",
"Post.description LIKE '%$keyword%'"
));
$posts = $this->Post->find("all", array("conditions" => $cond));
$this->set(compact("posts", "keyword"));
}
而且效果很好。唯一的问题是当我想对结果进行分页时。我只是添加:
$posts = $this->paginate();
这就是问题所在。当我添加这个时,CakePHP 会给我所有的帖子,而不仅仅是那些与关键字匹配的帖子。
所以,如果你有一个解决方案,那就太好了:)
【问题讨论】:
-
你看过 cake dc 搜索插件了吗? github.com/cakedc/search 它以干净干爽的方式完成所有这些工作 - 您可以省去很多重新发明轮子的麻烦。
-
是的,这是我的第一个想法,但是,我不知道,它只是不想工作。或者我在设置时做错了什么......
-
很可能是后者——因为它对我们大多数人来说都完美无缺:)
标签: cakephp pagination