我有MyModel
,无论何时创建或更新,我都想在my_model_changes (MyModelChange)
中插入一行,这是所有更改的日志。
问题是我需要MyModelChange
才能保存当前用户的ID,以便存储授权更改为MyModel
的人。
我知道模型不应该能够访问MVC中的Auth会话。但是,必须记录MyModel
的每个更改,因此我不希望每次修改模型时都要记住在控制器中执行此操作。存在被遗忘或未正确完成的风险,在这种情况下日志将不完整。相反,我想使用MyModel::afterSave()
,以便它自动化并始终正常发生。
那么如何让MyModel
找到Auth用户的ID?
答案 0 :(得分:1)
也许我的解决方案不是最优雅的方式,但我在我的应用程序中使用它并且它有效。在保存到控制器之前,我使用user_id扩展$ this->数据,如下所示:
$this->data['MyModel']['user_id']=$this->Auth->user('id');
所以我可以在我的模型afterSave方法中使用它。我希望它可以提供帮助。
答案 1 :(得分:1)
是不是可以在app_controller.php的beforeFilter中做你想做的事情?这样你就不必在其他控制器中设置任何东西,除非你覆盖它的parent :: beforeFilter(),否则它。
但如果确实需要,可以将其放入模型中以访问会话数据:
App::import('Component', 'SessionComponent');
$Session = new SessionComponent();