【发布时间】:2014-01-22 17:52:50
【问题描述】:
我是新来的,正在使用 CakePHP,我想在我的网站上创建一个搜索器,但我有这个错误和警告:
注意(8):未定义变量:negocios [APP\View\Negocios\buscar.ctp, line 3] 警告 (2):为 foreach() [APP\View\Negocios\buscar.ctp,第 3 行] 提供的参数无效
这是我的控制器代码:
<?php
class NegociosController extends AppController {
public $components = array('Paginator');
public $helpers = array('Html', 'Form');
public function index(){
$this->paginate = array('limit' => 1);
$negocios = $this->paginate('Negocio');
$this->set(compact('negocios'));
}
public function ver($id = null, $nombre){
$this->Negocio->id = $id;
$this->set('negocio', $this->Negocio->read());
}
public function buscar(){
if(!empty($this->data)){
$query = $this->data['Negocio']['buscador'];
$this->set($query, $this->data['Negocio']['buscador']);
$conditions = array(
'conditions' => array(
'or' => array(
'Negocio.titulo LIKE %$query%',
'Negocio.direccion LIKE %$query%',
'Negocio.lugar 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%'
)
)
);
$this->set('negocios', $this->Negocio->find('all', $conditions));
}
}
}
?>
我的观点:
<?php
foreach ($negocios as $key => $negocio) {
echo $negocio['Negocio']['titulo'].'<br />';
echo $negocio['Negocio']['descripcion'].'<br />';
echo $negocio['Negocio']['categoria'].'<br />';
}
?>
@cornelb 我有这个:
<?php
echo $this->Form->create(array('controller' => 'negocios', 'action' => 'buscar'));
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();
?>
当我搜索某些东西时,我得到了这个错误:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '%$query%) OR (Negocio.direccion LIKE %$query%) OR (Negocio.lugar LIKE %$ 附近使用的正确语法' 在第 1 行
但如果我使用“get”方法,我什么也得不到。
【问题讨论】:
-
你的视图代码搞砸了。
-
还有...那是哪个视图?
-
您只是将 $negocios 发送到“if(!empty($this->data)){”条件内的视图。即使用户没有搜索任何内容,您也应该发送一个空的。搜索是否返回任何内容?
-
@user221931 我的视图显然没有完成,只是看看它是否有效并查看显示的信息,我搜索的东西只能在我的视图中看到“buscar.ctp”通知(8) :未定义变量:negocios [APP\View\Negocios\buscar.ctp,第 3 行] 警告 (2):为 foreach() [APP\View\Negocios\buscar.ctp,第 3 行] 提供的参数无效