forms - 带有实体的 Symfony 表单
问题描述
嗨,我需要一个关于实体类的思考帮助。我有编辑功能
/**
* @Route("/{id}/edit", name="admin_product_group_edit", methods={"GET","POST"})
*/
public function edit(Request $request, ProductGroup $productGroup): Response
{
$form = $this->createForm(ProductGroupType::class, $productGroup);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('admin_product_group_index', [
'id' => $productGroup->getId(),
]);
}
return $this->render('admin/product_group/edit.html.twig', [
'product_group' => $productGroup,
'form' => $form->createView(),
'scrollUp' => true,
]);
}
我有表格类型
use App\Entity\ProductGroup;
use App\Entity\ProductType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ProductGroupType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('nameDe')
->add('nameEn')
->add('descriptionDe')
->add('descriptionEn')
->add('rank')
->add('active')
->add('creatDate')
->add('updateDate')
->add('productTypes', EntityType::class, [
// looks for choices from this entity
'class' => ProductType::class,
// uses the User.username property as the visible option string
'choice_label' => 'nameDe',
// used to render a select box, check boxes or radios
// 'multiple' => true,
// 'expanded' => true,
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => ProductGroup::class,
]);
}
}
通过创建一个新的 ProductGroup 一切都很好,但是通过编辑它,我无法获得编辑表单。
我收到这个错误
Argument 1 passed to App\Controller\Admin\ProductGroupController::edit() must be an instance of App\Entity\ProductGroup, instance of App\Entity\ProductType given, called in /var/www/symfony-michael-roskosch/htdocs/vendor/symfony/http-kernel/HttpKernel.php on line 150
这是带有 symfony2 的 symfony 4.3 我对此没有任何问题,你能给我一个提示吗?
解决方案
好的,我找到了
我通过 orm 注释链接了错误的 repositoryClass
/**
- * @ORM\Entity(repositoryClass="App\Repository\ProductTypeRepository")
+ * @ORM\Entity(repositoryClass="App\Repository\ProductGroupRepository")
*/
class ProductGroup
{
取实体名称 ProductType 不是一个好主意,因为您有表格 ProductTypeType。在 bin/console make:crud 之后,代码中出现了一些错误。我不知道是我昨晚做的,还是它自己的粗加工过程。
没关系,现在它可以工作了:-)
推荐阅读
- handlebars.js - 如何迭代 Handlebars 中的对象?
- javascript - 根据用户使用 bootbox 的输入更改卡片的标题
- python - 如何通过 Python 中的 YAML 配置文件检查与数据库的连接?
- php - Deezer API 访问令牌
- r - 将多个 bib tex 文件合并为一个
- c++ - 实现模板化虚函数的规范方法
- android - How to add ripple effect to Preference
- git - 如何在 Bitbucket.org 中有效地进行重复代码审查?
- jwt - LoopBack 4 中所有 API 的通用授权
- android - Android(Kotlin)中的父/子复选框(2级嵌套)