0

我正在使用 Symfony 4 创建一个博客并使用以下命令生成表单:

php bin/控制台 make:form

当我尝试像这样渲染它时:

    /**
    *   Require ROLE_USER for only this controller method.
    *   @Route("/create", name="post.create")
    *   @return Response
    */
    public function create(): Response
    {
        $post = new Post();
        $form = $this->createForm(CreatePostType::class, $post);

        return new Response($this->twig->render('pages/create.html.twig'), [
            'form' => $form->createView()
        ]);
    }

我收到这个错误

无法将数据库值“'ROLE_USER'”转换为 Doctrine Type json

对于这条线

'form' => $form->createView()

这是我的 getRoles :

    /**
     * @see UserInterface
     */
    public function getRoles(): array
    {
        $roles = $this->roles;

        // guarantee every user at least has ROLE_USER
        $roles[] = 'ROLE_USER';

        return array_unique($roles);
    }

和我的 security.yaml

security:
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        in_memory: { memory: ~ }
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: ~

我正在搜索 3 天并在没有安全管理的情况下在第二个目录中重新启动了我的项目,我不明白它的来源以及如何解决它

谢谢

4

1 回答 1

0

我猜角色属性没有在您的数据库中存储为 json 类型。您可以检查数据库中角色字段的类型吗?

作为旁注,您可以将响应重写为:

return $this->render('pages/create.html.twig', [
  'form' => $form->createView(),
]);
于 2019-04-01T22:14:31.820 回答