目前,我用PHP Symfony框架开发了一个应用程序。我有一个表单生成器的问题(我想)。
我有两个实体。问题和选择。问题和选择是一对多关系实体。一个问题有多个选择。
另外两个实体,视频和类别,其关系与问题和选择的关系相同。
我用php bin/console make:crud
为这些实体创建脚手架crud。
然后我添加关系symfony,如guide from Symfony。
逻辑是,我必须首先选择类别来创建新的视频。与选择相同,我必须首先选择问题来创建新的选择数据。
当我打开Choice Create Form [/choice/new]时,问题出现了。
变量“expanded”不存在。
然后错误详细信息显示在这行
return $this->render('choice/new.html.twig', [
'choice' => $choice,
'form' => $form->createView(), // The highlighted error appear on this line
]);
但是,它只是发生在问题-选择,我的类别-视频的关系是刚刚好.我试图使问题-选择作为类别-视频相同(我改变了实体的名称肯定),我三重检查,但选择创建窗体上的错误仍然发生.
这是我的App\Form\ChoiceType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('content')
->add('letter')
->add('image')
->add('question', EntityType::class, [
'class' => Question::class,
'choice_label' => 'content'
])
;
}
注意add('question')
这是我的App\Form\VideoType buildForm方法
<?php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('url', FileType::class, [
'label' => 'Video File',
'required' => false,
])
->add('thumbnail', FileType::class, [
'required' => false,
])
->add('description')
->add('category', EntityType::class, [
'class' => Category::class,
'choice_label' => 'name'
])
;
}
注意add('category')
有人知道发生了什么吗?
2条答案
按热度按时间iszxjhcz1#
我将App\Form\ChoiceType重命名为App\Form\TheChoiceType,对控制器上的类名进行了一些调整。一切正常!
我不相信这个!解决方案是重命名表单类型。
yvfmudvl2#
重命名肯定会起作用,因为错误与名称有关。
在表单类App\Form\ChoiceType中添加方法
getBlockPrefix
如下:这样,您的表单就不会在使用默认块前缀呈现的表单布局中遇到
{%- block choice_widget -%}
。默认块前缀是基于表单类名创建的。您可以在这里阅读更多关于表单片段命名的信息:https://symfony.com/doc/current/form/form_themes.html#form-fragment-naming
其他表单名称也是如此,比如text、textarea、file,甚至color(Chloé也遇到过同样的问题)。
有时候命名很难:)