0

如何Gedmo\Blameable\BlameableListener在 Zend Expressive 应用程序中设置用户值?

事件订阅者已成功添加到EventManager(请参阅配置文件)。TimestampableListener正在按预期工作。

/config/autoload/doctrine.local.php

<?php

declare(strict_types = 1);

use Gedmo\Blameable\BlameableListener;
use Gedmo\Timestampable\TimestampableListener;

return [
    'doctrine' => [
        // [..]
        'event_manager' => [
            'orm_default' => [
                'subscribers' => [
                    BlameableListener::class,
                    TimestampableListener::class,
                ],
            ],
        ],
    ],
];

后端/App/Entity/Role.php

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Blameable\Traits\BlameableEntity;
use Gedmo\Timestampable\Traits\TimestampableEntity;

/**
 * @ORM\Entity()
 * @ORM\Table(name="role")
 */
class Role
{
    use TimestampableEntity;
    use BlameableEntity;

    /**
     * @ORM\Id()
     * @ORM\Column(name="id", type="guid")
     * @ORM\GeneratedValue(strategy="UUID")
     * @var string
     */
    private $id;

    /**
     * @ORM\Column(name="name", type="string")
     * @var string
     */
    private $name;

    // [..]
}

文档中它指出:

请注意,您需要在 BlameableListener 上设置用户(除非您使用 Symfony2 扩展,它会自动分配当前的安全上下文用户)。

我不确定如何实现它。在某个地方我应该能够定义一个处理设置用户值的可调用或类,但是如何?

4

1 回答 1

0

我通过定义一个BlameableUserValueHandlerInterface. 必须实现并传递给身份验证中间件。中间件将当前身份提供给 BlameableUserValueHandler,后者将其分配给BlameableListener.

于 2019-02-14T08:33:22.453 回答