我试图创建一个控制器在那里我可以编辑用户(只是,没有别的),我的卡王的角色编辑用户角色。如何创建形式FriendsOfSymfony UserBundle
我创建了一个表单类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'roles', 'choice', [
'choices' => ['ROLE_ADMIN', 'ROLE_USER', 'ROLE_CUSTOMER'],
'expanded' => true,
'multiple' => true,
]
)
->add('send', 'submit');
}
首先,这将是检索作用的最佳方式?有什么办法可以将标签与他们联系起来吗?
在控制器我有这样的:我有
/**
* User role edition
*
* @Route(
* path="/edit-roles",
* name = "backoffice_user_edit_roles",
* requirements = {
* "id_user" = "\d*",
* },
* methods = {"GET"}
*)
*
* @Security("has_role('ROLE_ADMIN')")
*
* @Template
*/
public function editRolesAction($id_user)
{
$user = $this->user_repository->findOneById($id_user);
$form = $this->form_factory->create('dirital_user_roles_form_type', $user);
return [
'form' => $form->createView(),
'user' => $user
];
}
问题:
- 形式不得到与当前用户角色填充,我应该怎么办呢?
- 当接收的形式,我怎么能更新用户?
非常感谢
如果你的用户有一个逗号分隔的角色集,那么你需要一个插件数据转换(http://symfony.com/doc/current/cookbook/form/data_transformers.html)的角色转换,并从一个阵列。 – Cerad
@Cerad其序列化,所以当你调用getRoles返回一个数组,这不应该是一个问题:) – petekaner
很公平,你的选择阵列需要被键入:http://symfony.com/doc/current/reference/forms /types/choice.html#choices – Cerad