我希望将Symfony 5设置为使用“人类可读的”角色来显示。当在小枝中显示用户信息时,我可以使用{{ user.roles }}。但是,这会显示(例如) "ROLE_ACCOUNTADMIN“(因为是针对数据库中的用户保存的),但是我希望它显示为"Account Administrator”。在使用user_roles表的Symfony 3中,有一个“角色”和“名称”字段,但这个字段已被删除。是否可以在Symfony 5中实现这一点,而无需在我想使用它时定义/包含一个数组?
发布于 2021-01-24 14:31:37
您可以创建一个扩展小枝,并且有许多解决方案.,但是对于我看到的最简单的解决方案,只需在实体上放置一个字段并使用主角色初始化它,这样您就可以获得api和树枝上的信息,然后邮寄.
<?php
namespace App\Entity;
// ...
class User
{
public static $USER_ROLE_AS_HUMAN_READABLE_INDEX = [
'ROLE_ACCOUNTADMIN' => 'Account Administrator',
'OTHER_ROLE' => 'Description',
// ...
]
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
// without mapping ..
private $roleHumanReadable
// ...
public function __construct() {
$this->initializeRoleHumanReadable();
}
public function getRoleHumanReadable():?string
{
return $this->roleHumanReadable;
}
public function initializeRoleHumanReadable():void
{
$rolePrincipal = $this->getRoles()[0] ?? null;
if (!isset(static::$USER_ROLE_AS_HUMAN_READABLE_INDEX[$rolePrincipal])) {
return;
}
$this->roleHumanReadable = static::$USER_ROLE_AS_HUMAN_READABLE_INDEX[$rolePrincipal];
}
}https://stackoverflow.com/questions/65825146
复制相似问题