Men*_*auu 5 authentication cakephp model cakephp-3.0
我一直在研究瘦控制器胖模型的方式。之前,我在我的控制器中使用了它:
$this
->find('all')
->contain(['Declarator'])
->where(['user_id' => $this->Auth->user('id')])
->order(['Declarations.created' => 'DESC']);
Run Code Online (Sandbox Code Playgroud)
但是,$this->Auth->user('id'), 在模型中不起作用。
还有什么其他方法可以从模型中的经过身份验证的用户那里获取 id?
还有什么其他方法可以从模型中的经过身份验证的用户那里获取 id?
只需将其传递给模型方法:
public function someModelMethod($userId, array $postData) {
// Do something here, move your code from the controller here
return $something;
}
public function someControllerAction() {
$this->set('data', $this->Model->someModelMethod(
$this->Auth->user('id'),
$this->request->data
);
}
Run Code Online (Sandbox Code Playgroud)
Cake 没有一个层来处理业务逻辑,所以大部分时间它都放在模型层中。Cake 也不使用依赖注入,因此像 auth 对象一样传递整个实例有时很麻烦。另外我认为 auth 对象本身不应该与模型层相交。我们要避免紧耦合。为了简化这一点(也用于测试),将所需的值传递给方法要容易得多。