2011-03-09 104 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