CakePHP - 访问Model :: afterSave()中的会话数据

时间:2011-10-11 16:11:38

标签: cakephp

我有MyModel,无论何时创建或更新,我都想在my_model_changes (MyModelChange)中插入一行,这是所有更改的日志。

问题是我需要MyModelChange才能保存当前用户的ID,以便存储授权更改为MyModel的人。

我知道模型不应该能够访问MVC中的Auth会话。但是,必须记录MyModel 的每个更改,因此我不希望每次修改模型时都要记住在控制器中执行此操作。存在被遗忘或未正确完成的风险,在这种情况下日志将不完整。相反,我想使用MyModel::afterSave(),以便它自动化并始终正常发生。

那么如何让MyModel找到Auth用户的ID?

2 个答案:

答案 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();