我正在做一个选择列表的形式。 这是我的FormType(仅作为测试)的内容:
$builder->add('regionUser');
$builder->add('roles' ,'choice' ,array('choices' => array(
"ROLE_ADMIN" => "ROLE_ADMIN",
"ROLE_USER" => "ROLE_USER",
),
'required' => true,
'multiple' => false,
));
当我执行,我得到了以下错误:
类型“标量”的期望的参数,“阵列”给定
错在何处? 如何解决呢?
有3个解决方案:
使用多种选择现场展示的作用领域。 多选择返回一个数组。
在您的形式,不显示“角色”字段。 把一个新的领域“角色”只有在你的buildform,不是在你的实体。 (您可以填写与角色层次autmaticaly,如果你想)。 在的onSuccess方法,获得了“角色”,设置角色的用户。
$用户> addRole($角色);
- 当你创建你的用户类,不要使用从FOSUserBundle的所述用户接口。 复制它,改变方法的原型。
// FOSUserBundle /用户界面
功能setRoles(数组$角色);
// YourUserBundle/UserInterface function setRoles($roles);
并更改方法在你的用户类别
// FOSUserBundle/UserInterface public function setRoles(array $roles) { $this->roles = array(); foreach ($roles as $role) { $this->addRole($role); } } // YourUserBundle/UserInterface public function setRoles($roles) { if (is_string()) { $this->addRole($roles); } else { $this->roles = array(); foreach ($roles as $role) { $this->addRole($role); } } }
你可以在这里找到更多的信息: https://groups.google.com/group/symfony2/browse_thread/thread/3dd0d26bcaae4f82/4e091567abe764f9
http://blog.aelius.fr/blog/2011/11/allow-user-to-choose-role-at-registration-in-symfony2-fosuserbundle-2/
https://github.com/FriendsOfSymfony/FOSUserBundle