2013-03-11 88 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