Symfony 呈现模板时数组到字符串的转换错误

Symfony 呈现模板时数组到字符串的转换错误,symfony,Symfony,我正在设置一个新的web应用程序项目,并运行命令来生成用户类和CRUD模板() 当我转到用户索引页时,它会相应地加载,但是当我尝试转到user/new时,我会得到一个数组到字符串的转换异常 如果我在new.html.twig中注释掉生成的{{include('user/_form.html.twig')},页面将加载。所以我一直在关注传递给_form.html.twig的表单 我怀疑问题在于用户属性角色是数组,但我不确定 这都是Symfony生成的代码-我没有在这里修改或编写任何东西 这是引发错

我正在设置一个新的web应用程序项目,并运行命令来生成用户类和CRUD模板()

当我转到用户索引页时,它会相应地加载,但是当我尝试转到user/new时,我会得到一个数组到字符串的转换异常

如果我在new.html.twig中注释掉生成的{{include('user/_form.html.twig')},页面将加载。所以我一直在关注传递给_form.html.twig的表单

我怀疑问题在于用户属性角色是数组,但我不确定

这都是Symfony生成的代码-我没有在这里修改或编写任何东西

这是引发错误的地方:

UserController.php

return $this->render('user/new.html.twig', [
'user' => $user,
'form' => $form->createView(),]);
_form.html.twig

{{ form_start(form) }}
  {{ form_widget(form) }}
  <button class="btn">{{ button_label|default('Save') }}</button>
{{ form_end(form) }}
根据我的理解,Symfony将尝试猜测字段类型并相应地构造表单。所以我不确定是数组字段类型导致了这种情况,还是它实际上来自createView调用

添加了UserType.php

<?php

namespace App\Form;

use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username')
            ->add('roles')
            ->add('password')
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => User::class,
        ]);
    }
}

Hi,您能粘贴表单类代码(UserType?)吗?Thanks@IgorW. 现在我看到make:crud也生成了一个UserType类。我已经用那个代码更新了这个问题。谢谢。我想你应该为attr roles@hous创建一个选项select,这就是它,谢谢。嗨,你能粘贴表单类代码(UserType)吗?Thanks@IgorW. 现在我看到make:crud也生成了一个UserType类。我已经用那个代码更新了这个问题。谢谢。我想你应该为attr roles@hous创建一个选项select,就是这样,谢谢。
<?php

namespace App\Form;

use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username')
            ->add('roles')
            ->add('password')
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => User::class,
        ]);
    }
}