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