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

时间:2019-07-16 16:25:29

标签: symfony

我正在建立一个新的Web应用程序项目,并运行命令来生成用户类和CRUD模板(https://symfony.com/blog/new-and-improved-generators-for-makerbundle)。

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

如果我在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) }}

用户类别属性

class User implements UserInterface
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=180, unique=true)
     */
    private $username;

    /**
     * @ORM\Column(type="json")
     */
    private $roles = [];

    /**
     * @var string The hashed password
     * @ORM\Column(type="string")
     */
    private $password;

据我了解,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,
        ]);
    }
}

0 个答案:

没有答案