2013-03-11 85 views
0

我從另一個控制器的方法調用一個控制器方法。我可以確認該方法正在被調用,因爲當我對傳遞的數據執行print_r時,我會看到我期望的一切。我的問題是,當我調用$ this-> Log-> save($ this-> data)時,沒有任何內容寫入數據庫。我是一名.NET開發人員,因此我對CakePHP知之甚少,但我知道這是人們應該將東西存入數據庫的方式,因此我遭受了很大的困難。CakePHP控制器方法不寫入DB

​​

和罪犯:

<?php 
//the called controller 
class LogsController extends AppController 
{ 
    function cms_addlog($note,$ba_id) 
    { 

     $this->Log->create(); 
     $curDateTime = getdate(); 

     $this->data['LogTime'] = $curDateTime; 
     $this->data['Note'] = $note; 
     $this->data['brandactivatorid'] = $ba_id; 
     //print_r($this->data); 
      //die(); 
     $this->Log->save($this->data); 
    } 
} 
?> 

回答

2

做到這一點,正確的方法是使日誌模型的cms_addlog功能部分。

然後調用

$this->Log->cms_addlog($user['User']['name'].' Logged in', $user['User']['id']);

+0

但是爲什麼它會一直運行我的函數並拒絕執行最後一行? – 2013-03-11 14:30:35

+0

沒有什麼區別。 – 2013-03-11 14:47:55

1

你不應該調用控制器動作/從你的代碼的任何地方的方法。控制器操作旨在直接從瀏覽器訪問。

乾淨的方法是在模型中實現addLog方法,並從控制器或組件中調用該方法。

請閱讀http://book.cakephp.org/2.0/en/getting-started/cakephp-structure.htmlhttp://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html作進一步參考。

+0

謝謝。但是,你能告訴我爲什麼我的函數運行90%,然後不執行最重要的一點?當然,該方法的位置比實際的錯誤更適合最佳實踐考慮。我會做你的建議,但我不明白爲什麼這不起作用。 – 2013-03-11 14:38:27

+0

我認爲你在做什麼你觸發了未定義的行爲 - 這顯然被認爲是一個錯誤。 – nanoman 2013-03-11 14:46:36

+0

沒有工作。仍然只運行到save()方法。 – 2013-03-11 14:46:51