我试图在应用程序中实现一个简单的搜索,但不知道处理这个问题的最佳方法。我的数据库包含一个包含City字段的Listings对象。我想创建一个搜索表单,在这个表单中,用户将一个城市输入到一个文本字段中,并在下一页获取该城市的所有列表。我不想执行全文搜索,只需查询该城市字段。使用CakePHP post方法搜索特定的数据库字段
另外,在结果页面上,我希望将查询存储在POST中,并且无法找出最佳方式来执行此操作。
在控制器中处理这个问题的最佳方法是什么?
我试图在应用程序中实现一个简单的搜索,但不知道处理这个问题的最佳方法。我的数据库包含一个包含City字段的Listings对象。我想创建一个搜索表单,在这个表单中,用户将一个城市输入到一个文本字段中,并在下一页获取该城市的所有列表。我不想执行全文搜索,只需查询该城市字段。使用CakePHP post方法搜索特定的数据库字段
另外,在结果页面上,我希望将查询存储在POST中,并且无法找出最佳方式来执行此操作。
在控制器中处理这个问题的最佳方法是什么?
嗯,你的看法会是这个样子
$this->Form->Create('Listing', array('action'=>'search'));
$this->Form->input('city', array('default'=>$city));
$this->Form->end();
if (isset($listings)) {
//code to display listings
}
这种观点将创造正确的形式。你的控制器需要得到这个值
function search() {
$city = '';
if (!empty($this->data)) {
$city = $this->data['Listing']['city'];
$opts = array(
'conditions' => array('Listing.city' => $city)
);
$listings = $this->Listing->find('all', $opts);
$this->set('listings', $listings);
}
$this->set('city', $city); // so the keyword is saved. Can also get it via $this->data
}
这段代码应该给你一个关于如何做到这一点的想法。
这是带CakePHP search plugin教程的优秀教程。您可以从github(带MySQL转储)下载完整的工作代码。
查看:
<?php echo $this->Form->create()
echo $this->Form->input('search');
?>
<input name="data[Product][word]" />
控制器:
<?php
$result = $this->Product->find('all',array(
'conditions'=>array(
'OR'=>array(
array('name LIKE'=>'%'.$word.'%'),
array('description LIKE'=>'%'.$word.'%')))));
$this->set(compact('result'));
?>
解释你的代码了。这是最好的方式(问)?为什么? – Gendarme 2016-08-19 18:53:37
我建议你开始与这个问题:) – JohnP 2011-03-03 06:43:35