我有几天使用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();
&GT;
我的控制器:
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(),它正在使用POST方法,当我搜索某些东西时,我会在网址中得到这个:
http://example.com/directorio/negocios/buscar?lugar=0&buscador=this+is+an+example&x=0&y=0
我在表单中的选择使用这些值0,1,2,3,...而不是我想要城市的名称和这样的网址:
http://example.com/directorio/negocios/buscar?lugar=City+1&buscador=this+is+an+example
因为我不知道网址中的X和Y是什么,我想我的问题是控制器和我的条件,因为我没有使用$ this-&gt; request-&gt; params ['Negocio'] ['卢格'];
我希望你能帮助我或指导我该怎么做,谢谢。
顺便说一下这是调试($ this-&gt; 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 :(得分:4)
尝试
$query = $this->params['query']['buscador'];
X和Y无所谓。
关于lugar
。假设你有一个数组
$lugar = array('City 1', 'City2' ,'City3');
在视图中,使用
echo $ this-&gt; Form-&gt; input('lugar', 数组('options'=&gt; array(array_combine($ lugar,$ lugar)),'empty'=&gt; '所有地方','标签'=&gt; false,'div'=&gt; false,'class'=&gt; 'selectric'));
然后,在控制器中,将$lugar
添加到条件:
$query = $this->params['query']['buscador'];
$lugar = $this->params['query']['lugar'];
$conditions = array(
'conditions' => array(
'or' => array(
'Negocio.lugar LIKE' => "%$lugar%",
'Negocio.nombre LIKE' => "%$query%",
....