2011-03-02 76 views
0

我试图在应用程序中实现一个简单的搜索,但不知道处理这个问题的最佳方法。我的数据库包含一个包含City字段的Lis​​tings对象。我想创建一个搜索表单,在这个表单中,用户将一个城市输入到一个文本字段中,并在下一页获取该城市的所有列表。我不想执行全文搜索,只需查询该城市字段。使用CakePHP post方法搜索特定的数据库字段

另外,在结果页面上,我希望将查询存储在POST中,并且无法找出最佳方式来执行此操作。

在控制器中处理这个问题的最佳方法是什么?

+0

我建议你开始与这个问题:) – JohnP 2011-03-03 06:43:35

回答

1

嗯,你的看法会是这个样子

$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 
} 

这段代码应该给你一个关于如何做到这一点的想法。

0

查看:

<?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')); 

?> 
+0

解释你的代码了。这是最好的方式(问)?为什么? – Gendarme 2016-08-19 18:53:37