【问题标题】:Symfony edit roles of User gives error用户的 Symfony 编辑角色给出错误
【发布时间】:2017-12-19 13:14:26
【问题描述】:

我正在尝试通过 Symfony 表单编辑来自特定用户的用户角色。

我的表单包含以下内容:

 ->add('role', ChoiceType::class, [
                'expanded' => true,
                'required' => false,
                'multiple' => true,
                'choices'  => [
                  'ROLE_SUPER_ADMIN' => 'ROLE_SUPER_ADMIN',
                  'ROLE_TEST' => 'ROLE_TEST',
                  'ROLE_USER' => 'ROLE_USER'
                ],
            ]);

这是我处理表单的方法

public function editUserAction(User $user, Request $request)
    {

        $userForm = $this->createForm(UserForm::class, $user);
        $userForm->handleRequest($request);

        if ($userForm->isSubmitted() && $userForm->isValid()) {
            $this->userService->save($user);

            return $this->redirectToRoute('user');
        }

        return $this->render(
            'userEdit.html.twig',
            [
                'form' => $userForm->createView(),
            ]
        );
    }

处理程序中的保存方法只是将数据持久化到数据库中。

当我尝试选择多个角色时遇到的错误是:

类型的预期参数 "Doctrine\Common\Collections\ArrayCollection", "array" 给出

【问题讨论】:

  • 你能发布你的用户类吗? $this->userService 背后是什么?
  • 您的错误究竟出现在哪里?发布堆栈跟踪。

标签: php symfony symfony-forms


【解决方案1】:

使用by_reference 选项:http://symfony.com/doc/current/reference/forms/types/choice.html#by-reference

->add('role', ChoiceType::class, [
            'expanded' => true,
            'required' => false,
            'multiple' => true,
            'choices'  => [
              'ROLE_SUPER_ADMIN' => 'ROLE_SUPER_ADMIN',
              'ROLE_TEST' => 'ROLE_TEST',
              'ROLE_USER' => 'ROLE_USER'
            ],
           'by_reference' => false
        ]);

检查您在 User 类上是否有 addRole 和 removeRole。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2018-05-09
    • 2022-10-25
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多