【问题标题】:Symfony 3.2. EntityType not workingSymfony 3.2。实体类型不起作用
【发布时间】:2017-04-11 12:08:31
【问题描述】:

我不知道为什么这不起作用:

->add('productSearchType', EntityType::class, array(
                'label' => 'entity.text.product.product_search_number_type',
                'class' => AC\ProductBundle\Entity\ProductSearchType::class,
                'choice_label' => 'designation',
                'expanded' => false,
                'placeholder' => 
'entity.text.product.select_product_search_number_type',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('e')
                            ->orderBy('e.designation', 'ASC');
                },
            ))

这是错误信息:

可捕获的致命错误:参数 1 传递给
Symfony\Bridge\Doctrine\Form\Type\DoctrineType::__construct()
必须实现接口 Doctrine\Common\Persistence\ManagerRegistry,
没有给出,在 (...)\src\Symfony\Component\Form\FormRegistry.php 中调用
在第 85 行并定义 (...)

【问题讨论】:

  • 向我们展示表单是如何实例化的。您可能做了类似new YourFormType(); 之类的操作,而不是通过表单工厂服务或类似服务(容器感知)获取表单。
  • $entity = $this->productService->getVariant($id); $form = $this->formFactory->create(VariantType::class, $entity, array('method' => 'POST', ));
  • 那你是如何注入 formFactory 属性的?

标签: orm doctrine symfony-3.2


【解决方案1】:

尝试像这样创建表单,以便表单工厂可以访问容器:

$form = $this->get('form.factory')
    ->create(VariantType::class, $entity, ['method' => 'POST'])
    ->getForm();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多