2014-01-29 59 views
0

我一直在使用CakePHP的幾天,我想打一個簡單的搜索,但即時通訊卡我有這樣的:GET方法CakePHP的搜索表單

我的搜索表單:

<?php 

echo $this->Form->create(array('controller' => 'negocios', 'action' => 'buscar', 'type' => 'get')); 
echo $this->Form->input('lugar', 
    array('options' => 
     array('City 1', 
      'City 2', 
      'City 3', 
      'City 4', 
      'City 5', 
      'City 6', 
      'City 7', 
      'City 8', 
      'City 9' 
      ), 'empty' => 'All places', 'label' => false, 'div' => false, 'class' => 'selectric')); 

echo $this->Form->input('buscador', array('placeholder' => 'Buscar negocios...', 'label' => false)); 
echo $this->Form->submit('search.png', array('type' => 'button', 'id' => 'buscar', 'div' => false)); 
echo $this->Form->end(); 

>

我的控制器:

public function buscar(){ 

$negocios = array(); 


if (!empty($this->request->params['Negocio'])) { 

    $query = $this->request->params['Negocio']['buscador']; 

    $conditions = array(
     'conditions' => array(
      'or' => array(
       'Negocio.nombre LIKE' => "%$query%", 
       'Negocio.direccion LIKE' => "%$query%", 
       'Negocio.descripcion LIKE' => "%$query%", 
       'Negocio.direccion LIKE' => "%$query%", 
       'Negocio.email LIKE' => "%$query%", 
       'Negocio.web LIKE' => "%$query%", 
       'Negocio.facebook LIKE' => "%$query%", 
       'Negocio.twitter LIKE' => "%$query%", 
       'Negocio.categoria LIKE' => "%$query%" 
      ) 
     ) 
    ); 

    $negocios = $this->Negocio->find('all', $conditions); 
} 

$this->set('negocios', $negocios); 
debug($this->params); 

}

而且我使用foreach()什麼也沒得到,我認爲IM,它與POST方法的工作,當我搜索的東西我得到這個在URL:

http://example.com/directorio/negocios/buscar?lugar=0&buscador=this+is+an+example&x=0&y=0

我的形式使用select這些值0,1,2,3,...每個而不是我想要的城市的名稱,像這樣的網址:

http://example.com/directorio/negocios/buscar?lugar=City+1&buscador=this+is+an+example

,因爲我不知道什麼是X和Y網址,我想我的問題是控制器和我的條件,因爲我沒有使用$ this-> request->什麼都沒有PARAMS [ 'Negocio'] [ '盧格'];

我希望你能幫助我或指導我該怎麼做,謝謝。

順便說一句,這是調試($ this-> params);

object(CakeRequest) { 
params => array(
    'plugin' => null, 
    'controller' => 'negocios', 
    'action' => 'buscar', 
    'named' => array(), 
    'pass' => array() 
) 
data => array() 
query => array(
    'lugar' => '0', 
    'buscador' => 'this is an example', 
    'x' => '0', 
    'y' => '0' 
) 
+0

然後,在控制器上添加$lugar的條件? – mark

+0

嘿@mark我讀了一些關於這個,但即時通訊學習如何使用CakePHP,所以我更喜歡無插件,但謝謝。 –

+0

使用熟練的開發人員或熱門插件的代碼並不令人羞恥(特別是作爲初學者)。這樣你就可以學習如何做對了。擁抱可用的代碼,學習它,以乾淨和良好的代碼學習自己。比烘烤東西更好 - 這通常發生在你不確切知道如何做某些事情時。 PS:「array('controller'=> ...」=>控制器部分在這裏不起作用 - 沒有「url」鍵作爲父節點是無用的。請參閱文檔。形成它自己,你可以省略create()中的整個設置。 – mark

回答

4

嘗試用

$query = $this->params['query']['buscador']; 

X和Y並不重要。

關於lugar。比方說,你有一個數組

$lugar = array('City 1', 'City2' ,'City3'); 

在視圖中,使用

回聲$這個 - >形式 - >輸入( '盧格', 陣列( '選項'=> 陣列(array_combine($ lugar,$ lugar)),'empty'=>'All places','label'=> false,'div'=> false,'class'=>'selectric'));爲什麼不直接使用https://github.com/CakeDC/search

$query = $this->params['query']['buscador']; 
$lugar = $this->params['query']['lugar']; 

$conditions = array(
    'conditions' => array(
     'or' => array(
      'Negocio.lugar LIKE' => "%$lugar%", 
      'Negocio.nombre LIKE' => "%$query%", 
      .... 
+0

我會嘗試這個,現在我有更多的想法做什麼,再次感謝的人。 –