gpt4 book ai didi

symfony - 如何使用 FriendsOfSymfony UserBundle 创建表单来编辑用户角色

转载 作者:行者123 更新时间:2023-12-02 10:49:16 26 4
gpt4 key购买 nike

我正在尝试创建一个 Controller ,我可以在其中编辑用户的角色(仅此而已,仅此而已),但我陷入了困境。

我创建了一个表单类型:

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');
}

首先,检索角色的最佳方法是什么?有什么方法可以将标签与它们关联起来吗?

在 Controller 中我有这个:

/**
* 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
];
}

我遇到的问题:

  • 表单未填充当前用户角色,我该怎么做?
  • 收到表单后,如何更新用户?

非常感谢

最佳答案

实际上它比我想象的要容易 - 这是形式:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'roles', 'choice', [
'choices' => ['ROLE_ADMIN' => 'ROLE_ADMIN', 'ROLE_USER' => 'ROLE_USER', 'ROLE_CUSTOMER' => 'ROLE_CUSTOMER'],
'expanded' => true,
'multiple' => true,
]
)
->add('save', 'submit', ['label' => 'ui.button.save']);
}

Controller :

public function editRolesAction(Request $request, $id_user)
{
$user = $this->user_repository->findOneById($id_user);
$form = $this->form_factory->create('dirital_user_roles_form_type', $user);
$form->handleRequest($request);
if($form->isValid())
{
$this->addFlash('success', 'section.backoffice.users.edit_roles.confirmation');
$this->em->persist($user);
$this->em->flush();
$this->redirectToRoute('backoffice_user_edit_roles', ['id_user' => $user->getId()]);
}
return [
'form' => $form->createView(),
'user' => $user
];
}

唯一剩下要做的部分是从配置中获取表单选择,而不是对它们进行硬编码。

关于symfony - 如何使用 FriendsOfSymfony UserBundle 创建表单来编辑用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33524346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com