【问题标题】:Symfony form with entity带有实体的 Symfony 表单
【发布时间】:2019-03-18 09:44:42
【问题描述】:

您好,我需要一个关于实体类表单的思考帮助。 我有编辑功能

/**
 * @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,我对此没有任何问题,你能给我提示吗?

【问题讨论】:

    标签: forms symfony entity


    【解决方案1】:

    好的,我找到了

    orm 注释链接的 repositoryClass 有误

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

    取实体名称 ProductType 不是一个好主意,因为您拥有 ProductTypeType 表单。在 bin/console make:crud 之后,代码中出现了一些错误。我不知道是我昨晚做的还是它自己的粗鲁过程。

    没关系,现在它可以工作了 :-)

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 2015-11-01
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      相关资源
      最近更新 更多