【问题标题】:Yii Creating an audit trail; Controller to another ControllerYii 创建审计跟踪;控制器到另一个控制器
【发布时间】:2013-05-15 18:53:24
【问题描述】:

我正在使用 Yii php 为一个项目创建一个审计跟踪模块,而且我是一个新手。众所周知,审计跟踪与历史、事务日志的创建有关......我已经为审计跟踪创建了一个模型 并为其生成了一个控制器以及一个单独的模型。 (当然使用 gii)

我的问题在于如何实际创建条目或线索(日志、历史记录,我不知道抱歉这个词 =3)

我的 AuditTrailController 有一个动作:

class AuditTrailController extends Controller{

    public function actionCreate()
    {
    //do create the trail   
    }

}

我的计划是从整个项目中所有模块的所有其他控制器调用 actionCreate(),例如:

class StudyController extends Controller {

        public function addRecord(){
        //add some record


        //---> i want to call the acionCreate() from the AuditTrailController from here
        //to create an entry telling that the some user "user" at time "time"
        //performed an "add" operation..
        }

        public function updateRecord(){
        //update some record


        //---> i want to call the acionCreate() from the AuditTrailController from here
        //create an audit entry telling the user "updated"
        }

}

-Yii:app() 不能解决问题..(或者我用错了)..

我已经搜索了很多答案,但他们说从一个控制器调用另一个控制器是“邪恶的”......我看到了使用组件之类的术语......其他说它应该在模型中完成......但我不知道.. 我是 OOP 和 Yii 的新手,所以我在这里很挣扎.. 帮帮我,谢谢.. 但如果以上是可能的,那么示例代码将非常有帮助,谢谢!

【问题讨论】:

    标签: php function yii controller audit


    【解决方案1】:

    您可以通过这种方式在另一个控制器中调用操作

    //这是你的动作控制器

    class AuditTrailController extends Controller
    {
    
        public function actionCreate()
        {
        //do create the trail   
        }
    
    }
    

    //这里是你想要使用你的动作的控制器

    class StudyController extends Controller {
    
            public function addRecord(){
                   $controller = new AuditTrailController($this->id);
                   $controller->actionCreate();
            }
    }
    

    不要忘记添加到配置这一行来导入

        'application.controllers.*',
    

    【讨论】:

    • 错误显示没有这样的文件或目录;我忘了告诉你......两个控制器在不同的模块中......说:模块1包含audittrailcontroller,模块2包含studycontroller..谢谢所以我有点猜测studycontroller类找不到另一个类,所以“新的 AuditTrailController()”不起作用
    • 我基本上是在创建一个名为“审计”的模块来跟踪特定用户在整个系统中的交易行为,所以我真的希望整个项目中的所有模块都能与审计模块至少调用它的 actionCreate() 来生成日志
    • 在你的模块目录文件yournameModule.php中,函数Init(),添加到$this->setImport,你的控制器从另一个模块的位置,比如'audit(你的模块的名字).controllers。 *',
    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2017-06-28
    相关资源
    最近更新 更多