2011-03-09 112 views
1

首先,我有一个Model user.php连接到用户表。 我有一个控制器UsersController。使用CakePHP搜索

我创建了搜索视图:(文件名:index.ctp)

<p><?php 
echo $this->Form->create("Users", array('action' => 'search')); 
echo $this->Form->input("Search Label", array('action' => 'search', 'name' => 'txt_search')); 
echo $this->Form->end("Search"); 
?></p> 

,这将去UsersController/search()函数

function search() { 
    if (!empty($this->data)) 
    { 
    $name = $this->data['Users']['txt_search']; 
    $conditions = array("User.name Like " => "%$name%"); 
    $result = $this->User->find('all', array('conditions'=> $conditions)); 
    $this->set('users', $result); 
    } 
} 

,这将载入search.ctp

我的问题是,当我在search.ctp中使用变量$ users时,它给我一个错误未定义变量:用户[APP \ views \ users \ search.ctp,第10行]。

我不明白。 请帮忙。谢谢!

+0

将调试级别设置为至少2以查看错误和SQL转储,并将'debug($ results)'放入您的控制器中,以便在将其传递给视图之前查看它的内容。 – Dunhamzzz 2011-03-09 09:03:52

+0

您确定if代码正在运行并且您的查询正在返回结果吗? – Belinda 2011-03-09 09:45:56

回答

2

您正在为输入指定一个自定义名称,然后检查$this->data由于输入的名称没有正确命名(并且没有在$this->data中自动填充),它们将为空。使用以下内容。

echo $ this-> Form-> input(“txt_search”,array('label'=>'Search Label'));

你应该看的几件事。

  1. 将默认值设置为您的users变量,以便您的页面在直接请求时不会中断。在顶部有$result = array();,并在search.ctp上检查empty()

  2. 为什么您在输入中指定了操作属性?你不需要那个。

+0

哦,我明白了..谢谢! – 2011-03-10 03:04:45