与实体的Symfony形式

时间:2019-03-18 09:44:42

标签: forms symfony entity

您好,我需要一个带有实体类的思维帮助解决表单。 我有编辑功能

/**
 * @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\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;

class ProductGroupType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $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) {
        $resolver->setDefaults([
            'data_class' => ProductGroup::class,
        ]);
    }
}

通过创建一个新的ProductGroup一切都很好,但是通过对其进行编辑,我无法获得编辑表单。

我收到此错误

传递给App \ Controller \ Admin \ ProductGroupController :: edit()的参数1必须是App \ Entity \ ProductGroup的实例,给定的App \ Entity \ ProductType的实例,在/ var / www / symfony-michael-中调用第150行上的roskosch / htdocs / vendor / symfony / http-kernel / HttpKernel.php

这是带有symfony2的symfony 4.3,我对此没有任何问题,您能给我个提示吗?

1 个答案:

答案 0 :(得分:0)

好,我找到了

我用orm注释链接了错误的repositoryClass

/**
- * @ORM\Entity(repositoryClass="App\Repository\ProductTypeRepository")
+ * @ORM\Entity(repositoryClass="App\Repository\ProductGroupRepository")
 */
class ProductGroup
{

采用实体名称ProductType并不是一个好主意,因为您的格式为ProductTypeType。在bin / console make:crud之后,代码中出现了一些错误。我不知道我昨晚是不是做过这些,还是它本身是由粗野的过程造成的。

现在没关系了:-)