【发布时间】:2014-02-21 17:30:08
【问题描述】:
我有几天使用 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() 在我看来什么也没有,它正在使用 POST 方法,当我搜索某些内容时,我在 url 中得到了这个:
http://example.com/directorio/negocios/buscar?lugar=0&buscador=this+is+an+example&x=0&y=0
我在表单中的选择使用这些值 0、1、2、3、...,而不是我想要城市的名称和这样的 url:
http://example.com/directorio/negocios/buscar?lugar=City+1&buscador=this+is+an+example
因为我不知道 url 中的 X 和 Y 是什么,我想我的问题是控制器和我的条件,因为我没有为 $this->request->params['Negocio']['lugar' 使用任何东西];
希望您能帮助我或指导我该怎么做,谢谢。
顺便说一下这是调试($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'
)
【问题讨论】:
-
为什么不直接使用github.com/CakeDC/search?
-
嘿@mark 我读过一些关于这个的东西,但我正在学习如何使用 CakePHP,所以我更喜欢不用插件,但是谢谢。
-
使用熟练开发人员的代码或流行的插件并不丢人(尤其是作为初学者)。通过这种方式,您可以学习如何正确操作。拥抱可用的代码,研究它,用干净和良好的编码自学。比烤一些有问题的东西要好——这通常发生在你还不完全知道如何做某些事情的时候。 PS:“array('controller' => ...” => 控制器部分在这里无效 - 如果没有“url”键作为父级,它是无用的。请参阅文档。发布形成它本身,你可以在 create() 中省略整个设置。
-
我理解,但我更喜欢这种方式,无意冒犯我接受所有的意见和建议,所以这应该是 echo $this->Form->create(array('action' => 'buscar' , '类型' => '获取')); ??