我想知道如何在我的主页上搜索属性等内容。
我正在尝试理解这个概念并查看了多个网站,但我仍然无法理解如何做到这一点。
我所需要的只是推动正确的方向。我需要所有与例如x模型和搜索相关的案例。虽然我的搜索是从家里搜索财产。
非常感谢任何帮助。
我放在控制器中的代码我不确定是否正确。 家庭控制器
public function index() {
//Populate localities dropdownlist
App::import('model','locality');
$locality = new Locality('locality');
$this->set('localities',$locality->find('list', array('fields' => array('id', 'fullname'))));
App::import('model','condition');
$condition = new Condition('condition');
$this->set('conditions',$condition->find('list', array('fields' => array('id', 'condition'))));
App::import('model','category');
$category = new Category('category');
$this->set('categories',$category->find('list', array('fields' => array('id', 'category'))));
App::import('model','serviceType');
$servicetype = new ServiceType('serviceType');
$this->set('serviceTypes',$servicetype->find('list', array('fields' => array('id', 'service_type'))));
}
视图
<?php
echo $this->Form->create('Property',array('contoller' =>'home', 'action'=> 'search'));
echo $this->Form->input('priceFrom',array('style'=> 'width:100%;'));
echo $this->Form->input('priceTo',array('style'=> 'width:100%;'));
echo $this->Form->input('locality_id',array('style'=> 'width:100%;'));
echo $this->Form->input('condition_id',array('style'=> 'width:100%;'));
echo $this->Form->input('category_id',array('style'=> 'width:100%;'));
echo $this->Form->input('service_type_id',array('style'=> 'width:100%;'));
echo $this->Form->end('Search');
?>
答案 0 :(得分:0)
这样的事情听起来像是一个很好的起点(你可能错过的技巧是使用ClassRegistry
到init
一个不同的模型,所以你可以对它进行查询)
<?php
class HomeController extends AppController {
public function search() {
if (!empty($this->request->query['s'])) {
$property = ClassRegistry::init('Property');
$searchstring = h($this->request->query['s']);
$searchResults = $property->find('all',array(
'limit' => 15,
'order' => array(
'Property.title' => 'asc'
),
'conditions' => array(
'or' => array(
"Property.title LIKE" => "%$searchstring%",
"Property.desc LIKE" => "%$searchstring%" //or whatevs
)
)
));
$this->set(compact('searchResults'));
}
}
}
会在以下网址上提供搜索结果:http://example.com/home/search?s=palacial
如果你担心SQL注入,我听说过:
&#34; CakePHP处理所有参数的SQL转义到Model :: find()和 模型::保存()&#34。 http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html
答案 1 :(得分:0)
您可以创建一个处理搜索功能的元素,将表单定位到控制器内的函数。
比如说,如果你想搜索属性,可以在PropertyController
内进行:
public function search()
{
//your search functionality, like $this->Property->find('all');, or adding conditions
}
然后你可以添加一个包含搜索表单的元素,命名为search.ctp
(在View/Elements
文件夹内):
$this->Form->create('Property', array('type' => 'get'));
$this->Form->input('search');
$this->Form->end('Search');
在您的主页中,您可以添加以下元素:
echo $this->element('search');
关于元素的好处是你可以在其他视图或布局中重用它