我从另一个控制器的方法调用一个控制器方法。我可以确认正在调用该方法,因为当我对传递的数据执行print_r时,我会看到我期望的一切。我的问题是,当我调用$ this-> Log-> save($ this-> data)时,不会向DB写入任何内容。我是一名.NET开发人员,因此我对cakePHP知之甚少,但我知道这是人们应该将数据保存到数据库的方式,因此我非常难过。
<?php
//The calling controller
App::import('Controller', 'Logs');
class othAuthComponent extends Object //I noticed this inherits from Object,
//but it doesn't seem to be a problem
{
function SomeFunction()
{
//create instance of our Logs controller as per example
$Logger = new LogsController;
$Logger->constructClasses();
$Logger->cms_addlog($user['User']['name'].' Logged in', $user['User']['id']);
}
}
?>
罪犯:
<?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);
}
}
?>
答案 0 :(得分:2)
执行此操作的正确方法是使cms_addlog函数成为Log模型的一部分。
然后致电
$this->Log->cms_addlog($user['User']['name'].' Logged in', $user['User']['id']);
答案 1 :(得分:1)
您不应该从代码中的任何位置调用Controller操作/方法。控制器操作可以直接从浏览器访问。
干净的方法是在模型中实现addLog方法,并从控制器或组件中调用该方法。
请阅读http://book.cakephp.org/2.0/en/getting-started/cakephp-structure.html和http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html以获取进一步的参考。