2013-07-11 38 views
0

我對cakephp很新穎,而且我正在試圖寫出一個非常基本的聲明。將MySQL數據返回到cakephp視圖

在我的視圖文件中,我想說如果events表中的is_open列爲真,請回顯一些內容。如果不是這樣,請回顯其他內容。

<?php 
    if ($response['data']['Event']['is_open'] == true) { 
    echo "Yes"; 
    } else { 

    echo "No"; 
    } 
?> 

我有麻煩控制器內向後工作以獲得在首位的數據。

在我的控制器中我有一些這樣的:

public function some_function() { 
    $events = $this->Event->find('all'); 
} 

我認爲文件中,我得到這個錯誤:

通知(8):未定義指數:事件[查看/應用/ agreement.ctp ,第21行]

任何人都可以指出我做錯了什麼?

我一直在閱讀博客教程,這在某些地方對我來說很清楚,而在其他地方並不清楚。我仍然遇到麻煩的地方是在視圖中顯示任何東西。

進一步閱讀之後,我想做這樣的事情在控制器:

$myVariable = $this->Event->find('first', 
    array('fields' => 'Event.is_open ', 
    'conditions' => array('Event.id =' => '400'))); 

什麼我希望能說的就是抓住從事件表中IS_OPEN值,其中events.id = 400(後這個值將是動態的)這看起來甚至是遠程正確的嗎? - mmalv剛剛編輯

+0

提供的$事件調試,你可能會看到自己有什麼不對 –

+0

請提供工作/完整的例子。你指的是'$ response','$ events','$ myVariable'的問題 - 有沒有辦法綁在一起。 – AD7six

回答

1

你是怎麼想出$response['data']的?

在您的EventsController中,您正確設置$this->Event->find('all')的返回值爲$events。爲了這個變量是提供給您的視圖,你需要調用Controller::set它是這樣的:

$this->set('events', $events); 

或者更簡單,一步到位,你可以這樣做:

$this->set('events', $this->Event->find('all')); 

然後在您的事件視圖(可能位於View/Events/index.ctp之類的某個位置)通過名稱$events訪問該變量。它應該是在格式

Array(
    [0] => Array(
    'Event' => Array(
     'id' => 1, 
     'name' => 'An open name!', 
     'is_open' => true 
    ) 
), 
    [1] => Array(
    'Event' => Array(
     'id' => 1, 
     'name' => 'Another event but closed', 
     'is_open' => false 
    ) 
) 
) 

所以現在你在你的觀點需要的是運行像一個循環:

foreach ($events as $key => $value) { 
    if ($value['Event']['is_open']) { 
    echo "Yes"; 
    } else { 
    echo "No"; 
    } 
} 

所有這一切都是在菜譜有詳盡的解釋,只是去通過博客教程。

+0

我一直在經歷的博客教程,它是在一些地方給我明確的,而在其他不清楚。當我仍然有麻煩的是顯示在視圖中任何東西。 進一步閱讀之後,我想做的控制器是這樣的: $ MYVARIABLE = $這個 - >事件 - >找到( '第一',陣列( '場'=> 'Event.is_open', 「 conditions'=> array('Event.id ='=>'400') )); 什麼我希望能說的就是抓住從事件表所在的events.id = 400(後該值將是動態的) 這是否看起來甚至遠程正確的IS_OPEN價值? – mmalv

+0

當然這是可能的 - 而且很簡單! 你似乎需要一些時間去把握一切,放鬆一下,試着理解這些例子,而不是僅僅把它們複製過來,然後把結果放在頭上。 如果您已經知道您的ID(並且它是有效的),那麼將其設置爲: '$ this-> Event-> id = 400;' 然後您的模型將包含該記錄的數據,需要像這樣: '$ isOpen = $ this-> Event-> field('is_open');' 不要忘記'Controller :: set()'它在你的視圖中可用。 – user221931

+0

另外,如果您尚未啓用DebugKit並使用'debug();'來查看返回或包含在變量中的內容。在**視圖**中,如果你調試了($ this - > _ viewVars());'你可以看看從控制器傳遞給視圖的內容。 – user221931