Yii创建审计跟踪;控制器到另一个Controller

时间:2013-05-21 05:22:38

标签: php function yii controller audit

我正在使用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()没有诀窍..(或者我错误地使用了它)..

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

1 个答案:

答案 0 :(得分: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.*',