次のような 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 はキーワードに一致する投稿だけでなく、すべての投稿を表示します。
だから、もしあなたが解決策を持っているなら、それはいいでしょう:)