【问题标题】:How to use Auth component of Cakephp 3 in Event如何在 Event 中使用 Cakephp 3 的 Auth 组件
【发布时间】:2016-12-27 16:08:44
【问题描述】:

我正在使用 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 吗?

【问题讨论】:

标签: cakephp cakephp-3.2


【解决方案1】:

对于 cake 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

【讨论】:

    【解决方案2】:

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

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

    将此作为参考:Reading & Writing Session Data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多