0

在我的 AppModel 中,我有一个 beforeSave 函数:

    public function beforeSave($options = array()) {
        if (!empty($this->data[$this->alias]['created'])) {
            $this->data[$this->alias]['created'] = date('Y-m-d G:i:s');
            $this->data[$this->alias]['modified'] = $this->data[$this->alias]['created'];
        } else {
            $this->data[$this->alias]['modified'] = date('Y-m-d G:i:s');
        }
        $this->data[$this->alias]['modified_by'] = AuthComponent::user('id');

        return true;
    }

这是一个简单的函数,只记录创建日期和修改日期,并将字段 modified_by 设置为当前登录用户的 id。或者至少这是它应该做的,除了获取当前登录用户的 id 之外,一切正常,我不知道为什么,因为据我在文档中可以看出,这正是它应该被调用的方式.

4

3 回答 3

1

我发现了我的问题,因此我觉得有点愚蠢,但我想我会在这里添加它,以防其他人遇到同样的问题。

在我的 News 模型中,我也调用了 beforeSave 函数,但是我忘记了其中的一行,即parent::beforeSave();. 我不知道 beforeSave 函数中的日期内容是如何工作的,但这解决了我的部分 beforeSave 函数不起作用的问题。

感谢大家在这件事上的帮助,不胜感激。

于 2013-10-22T16:11:30.983 回答
0

为什么不从中获取您的用户 ID

CakeSession::read('Auth.User.Id) ?

于 2013-10-22T11:24:18.727 回答
0

我认为您应该在 AppControlle::beforeFiler() 方法而不是 AppModel 中设置用户 ID

$this->data[$this->modelClass]['modified_by'] = $this->Auth->User('id');
于 2013-10-22T13:33:24.397 回答