【发布时间】:2024-05-02 19:40:02
【问题描述】:
在我的项目中,我希望管理员能够更改所需的角色以使用选择字段查看某些内容。 我有一个为我构建表单的 ArticleType:
class ArticleType extends AbstractType
{
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title')
->add('requiredRole', 'choice');
}
...
}
我也想翻译角色。例如,“ROLE_ADMIN”被翻译为“Admins”。 因为我也需要一些不同形式的这个函数,所以我认为创建一个自定义表单字段类型会是一个很好的解决方案。
但是我遇到的问题是我无法访问定义的角色。
我让它在没有自定义字段类型的情况下在控制器中工作
$form = $this->createForm(new ArticleType($this->container->getParameter('security.role_hierarchy.roles')), $article);
这在 ArticleType 中
class ArticleType extends AbstractType
{
...
private $roles;
public function __contruct($roles)
{
$this->roles = $this->refactorRoles($roles);
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title')
->add('requiredRole', 'choice', array('choices' => $this->roles);
}
...
}
但是使用这个解决方案,我必须在每个类型中包含 refactorRoles 函数,我需要角色字段,当我添加或重命名角色时,我必须再次更改每个类型。
所以我的问题是,如何创建自定义角色类型才能访问定义的角色并翻译它们? 另外,这是个好主意还是我应该做一些不同的事情?
【问题讨论】: