来自用户实体的 parameter.yml 中的 symfony 访问参数



我用 parameters.yml 声明了我的角色,我想从我的 User 实体访问它们以获取 getRoles 函数(从用户界面 https://api.symfony.com/3.4/Symfony/Component/Security/Core/User/UserInterface.html#method_getRoles(。

role_global_admin: ROLE_GLOBAL_ADMIN
role_admin: ROLE_ADMIN
role_manager: ROLE_MANAGER

由于服务定义,我想访问我的参数,但我了解到这在symfony(对于实体(中是严格禁止的。实体不应具有依赖项。

用户.php

/**
* Returns the roles granted to the user.
*
* @return (Role|string)[] The user roles
*/
public function getRoles()
{
if (true === $this->isGlobalAdminRole()) {
return ['ROLE_GLOBAL_ADMIN'];
}
return null == $this->getSymfonyOrganigramRole() ? ['ROLE_MANAGER'] : [$this->getSymfonyOrganigramRole()];
}

例如,我想访问 role_global_admin 参数,而不是直接访问其值。 getRoles(( 在连接期间自动执行,以为用户提供角色。

我该如何实现这一点,我希望我的角色集中在参数文件中。

谢谢

您可以将角色定义为单独文件或实体中的常量,然后在实体、security.yml 或任何其他 yml 文件中使用它们 正如这里提到的

例如:

AppBundle\Utils\UserMetaData

class UserMetaData {
const ROLE_ADMIN = 'ROLE_ADMIN';
const ROLE_USER  = 'ROLE_USER';
}

security.yml:

role_hierarchy:
!php/const AppBundleUtilsUserMetaData::ROLE_ADMIN: !php/const AppBundleUtilsUserMetaData::ROLE_USER

最新更新