我正在寻找一种使用 Symfony 4 创建嵌入式表单的方法。我使用了一个查询,这个查询返回一个数组。但是当我执行代码时出现以下错误:表单的视图数据应该是类 App\Entity\Categorie 的一个实例,但它是一个 (n) 数组。您可以通过将“data_class”选项设置为 null 或添加一个将 (n) 数组转换为 App\Entity\Categorie 实例的视图转换器来避免此错误。所以我的控制器看起来像这样: /** * @Route("/admin/categories/import/{userId}", name="admin.categorie.link", methods={"GET|POST"}) * @param Int $userId * @return Response */ public function linkImport(Int $userId, Request $request) { $categories = $this->em->getRepository(Categorie::class)->checkIfNew($userId); $form = $this->createForm(CategorieType::class, $categories); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->em->flush(); $this->addFlash('success', 'Catalogue modifié avec succès'); return $this->redirectToRoute('admin.catalogues.index'); } return $this->render('admin/catalogues/link.html.twig', [ 'categories' => $categories, 'form' => $form->createView() ]); }我的表单类型如下所示:class CategorieType extends AbstractType{ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('categorie_intitule') ->add('categorie_parent_id') ; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Categorie::class, ]); }}我尝试使用 foreach 来构建表单foreach ($categories as $categorie) { $form = $this->createForm(CategorieType::class, $categorie); $form->handleRequest($request);}但它在我的树枝里返回了我的notinhg。所以你能告诉我更多关于这个错误的信息,以及如何解决它吗?谢谢。
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
CategorieType是单个 的单一形式Category。如果你需要显示所有这些,也许你应该用另一种形式包裹CategorieType 起来CategorieCollectionType(比如)。
更多或更少,像
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
class CategorieCollectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('categories', CollectionType::class, [
'entry_type' => CategorieType::class, // remember to import it via "use"
])
);
}
}
并在控制器中使用它
$form = $this->createForm(CategorieCollectionType::class, ['categories' => $categories]);
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消