Cakephp 从模型内访问app_控制器功能

Cakephp 从模型内访问app_控制器功能,cakephp,Cakephp,我为应用程序的需要创建了一个精心设计的日志记录和错误报告系统,该系统通过使用app_控制器中的一个函数进行接口。我可以从系统中的任何控制器调用它,因为控制器扩展了app_控制器。我希望能够从模型函数中调用此函数。有人能告诉我如何做,或者有什么替代方法吗?有几个选项: 使用自定义AppModel(app/app\u model.php)将逻辑迁移到模型层。假设所有控制器至少使用一个模型,则可以针对任何模型调用任何日志函数。例如:$this->MyModel->customLog('test') 将

我为应用程序的需要创建了一个精心设计的日志记录和错误报告系统,该系统通过使用app_控制器中的一个函数进行接口。我可以从系统中的任何控制器调用它,因为控制器扩展了app_控制器。我希望能够从模型函数中调用此函数。有人能告诉我如何做,或者有什么替代方法吗?

有几个选项:

  • 使用自定义AppModel(app/app\u model.php)将逻辑迁移到模型层。假设所有控制器至少使用一个模型,则可以针对任何模型调用任何日志函数。例如:
    $this->MyModel->customLog('test')
  • 将逻辑迁移到类中,将其存储在app/libs中,并根据需要将其加载到控制器或模型中
  • 即:

    有两种选择:

  • 使用自定义AppModel(app/app\u model.php)将逻辑迁移到模型层。假设所有控制器至少使用一个模型,则可以针对任何模型调用任何日志函数。例如:
    $this->MyModel->customLog('test')
  • 将逻辑迁移到类中,将其存储在app/libs中,并根据需要将其加载到控制器或模型中
  • 即:


    您不应该从模型访问控制器。你能更详细地描述一下这个函数具体做什么吗?基本上,我想要一个相当高级的日志功能,在开发/质量保证服务器上进行非常详细的日志记录,而在生产服务器上则更少。日志条目具有严重性等级(调试、信息、严重性等)。我想在应用程序代码的不同地方使用它。我更喜欢使用fat模型方法,但app_controller中存在的这个日志记录功能不太适合这种情况。您不应该从模型访问控制器。你能更详细地描述一下这个函数具体做什么吗?基本上,我想要一个相当高级的日志功能,在开发/质量保证服务器上进行非常详细的日志记录,而在生产服务器上则更少。日志条目具有严重性等级(调试、信息、严重性等)。我想在应用程序代码的不同地方使用它。我更喜欢使用fat模型方法,但是app_controller中存在的这个日志记录功能不太适合这样做。谢谢。我认为使用库功能可能是最好的方法。感谢您对此进行说明。还有一个方面需要澄清:我希望在某些情况下可以在此函数中生成对$this->Session->setFlash()或$this->redirect()的调用。从app_控制器中删除该功能可能不允许使用这些功能。。。也许?@Excalibur您不应该将日志逻辑与用户交互流逻辑混为一谈。制作一个控制器功能,调用您的日志代码,并在必要时重定向/闪烁。谢谢。我认为使用库功能可能是最好的方法。感谢您对此进行说明。还有一个方面需要澄清:我希望在某些情况下可以在此函数中生成对$this->Session->setFlash()或$this->redirect()的调用。从app_控制器中删除该功能可能不允许使用这些功能。。。也许?@Excalibur您不应该将日志逻辑与用户交互流逻辑混为一谈。制作一个控制器功能,调用您的日志代码,并在必要时重定向/闪烁。
    App::import('Lib', 'CustomLog');
    $this->CustomLog = new CustomLog(); 
    $this->CustomLog->customLog('test');