我正在为我的网站开发管理面板,其中一部分是管理用户。我正在使用 FOSUserBundle 来完成这些任务。
我正在为表单使用自定义模板 (AdminLTE),当我添加新模板时,我无法添加下拉菜单来为用户选择角色。
在UserType.php
$builder->add('roles', 'choice', array(
'label' => 'User Role',
'choices' => $this->roleHelper->getRolesForForm()
));
在WCB\SaleBundle\Helper\RoleHelper.php
...
public function getRolesForForm()
{
$roleList = self::flatArray($this->rolesHierarchy);
$roles = array();
foreach ($roleList as $roleId => $roleName) {
if ($roleId == 'ROLE_ADMIN') {
$roles[$roleName] = 'Admin';
}
if ($roleId == 'ROLE_USER') {
$roles[$roleName] = 'User';
}
}
return $roles;
}
...
上面的函数将返回这个数组,这是与 Symfony 的字段类型getRolesForForm()
一起使用的正确格式:choice
Array
(
[ROLE_ADMIN] => Admin
[ROLE_USER] => User
)
并且该表单不再起作用,但有以下例外:
The value of type "array" cannot be converted to a valid array key.
当我添加'multiple' = true
到表单生成器时,它可以工作,但它不是下拉列表。它是允许多选的 HTML 选择框。
$builder->add('roles', 'choice', array(
'label' => 'User Role',
'choices' => $this->roleHelper->getRolesForForm(),
'multiple' => true
));
我认为,对于角色选择,它应该是一个下拉菜单,而不是一个多选框。我怎样才能做到这一点?我的代码有什么问题吗?谢谢 :)