0

別のコントローラーのメソッドから 1 つのコントローラー メソッドを呼び出しています。渡されたデータに対して print_r を実行すると、期待どおりのものがすべて表示されるため、メソッドが呼び出されていることを確認できます。私の問題は、$this->Log->save($this->data) を呼び出すと、DB に何も書き込まれないことです。私は .NET 開発者なので、cakePHP についてほとんど知りませんが、これが DB にデータを保存する方法であることは知っているので、非常に困惑しています。

<?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);
    }
}
?>
4

2 に答える 2

2

これを行う正しい方法は、cms_addlog 関数をログ モデルの一部にすることです。

それから電話する

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

于 2013-03-11T14:28:46.793 に答える
1

コードのどこからでもコントローラーのアクション/メソッドを呼び出すことは想定されていません。コントローラーのアクションは、ブラウザーから直接アクセスすることを意図しています。

クリーンな方法は、モデルに 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を参照してください。

于 2013-03-11T14:34:19.243 に答える