如何在Event中使用Cakephp 3的Auth组件

How to use Auth component of Cakephp 3 in Event

我正在使用 CakePHP 3.2 和 proffer 插件上传图片。

我想重写proffer插件上传图片的默认路径,并在保存前更改图片名称。

根据 github 提供的文档。我在 /src/Event

中创建了一个活动

现在我想将文件重命名为

$this->Auth->user('id').'-'.$row('id').date('dmyhis').ext

这就是我所做的

$newFilename = $this->Auth->user('id').'-'.$event->subject()->get('id') . '_' . Inflector::slug($event->subject()->get('name')) . date('ymdhis') . $ext;

但这给出了不能在此处使用 Auth 的错误。有什么方法可以在控制器外使用 Auth Component 吗?

您可以通过加载会话访问已登录的用户标识。

use Cake\Network\Session;
$session  = new Session();
$userData = $session->read('Auth.User.id');

以此为参考:Reading & Writing Session Data

蛋糕 3.x 及之后,你应该使用这个:

$this->request->session()->read('Auth');

调试时

debug( $this->request->session()->read('Auth') );

[
    'id' => (int) 2,
    'username' => 'admin',
    'nice_name' => 'Tommy Do',
    'first_name' => 'Huy',
    'last_name' => 'Đỗ',

    ...//and more info in UserTable
]

并访问每个元素。

$this->request->session()->read('Auth.nice_name');

打印:

Tommy Do

希望对你有所帮助:D