如何在Zend Expressive应用程序的Gedmo\Blameable\BlameableListener
上设置用户值?
事件订阅者已成功添加到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,
],
],
],
],
];
后端/应用/实体/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;
// [..]
}
在documentation中指出:
请注意,您需要在BlameableListener上设置用户(除非您使用Symfony2扩展名,该扩展名会自动分配当前的安全上下文用户)。
我不确定如何实现它。我应该可以在某个地方定义一个可调用的或可用于设置用户值的类,但是如何?
答案 0 :(得分:0)
我通过定义BlameableUserValueHandlerInterface
解决了这个问题。必须实现并将其传递给身份验证中间件。中间件向BlameableUserValueHandler提供当前身份,该身份将其分配给BlameableListener
中的用户值。