【问题标题】:Empty EntityManager QueryBuilder error空 EntityManager QueryBuilder 错误
【发布时间】:2016-02-29 07:58:34
【问题描述】:

我正在 Symfony 2 中构建一个表单。我正在更新一个网站,我发现我需要创建一个新的:

public function buildForm(FormBuilderInterface $builder, array $options){

在一个新文件中。

现在我复制了一个有效的现有表单生成器文件。(当然我更改了参数和值)。 这就是公共表单构建器函数的样子:

序列号类型.php

public function buildForm(FormBuilderInterface $builder, array $options){
    $query = $this->em->createQueryBuilder();
    $query->select('*')
        ->from('AppBundle:SerialNumber', 'sn');

    $serialnumbers = $query->getQuery()->getResult();

    $options = array();
    foreach($serialnumbers as $serialnumber){
        $options[$serialnumber['id']] = $serialnumber['id'];
        $options[$serialnumber['product_revision_id']] = $serialnumber['product_revision_id'];
        $options[$serialnumber['booking_id']] = $serialnumber['booking_id'];
        $options[$serialnumber['serial_nr']] = $serialnumber['serial_nr'];
    }

    $builder->add("serial_nr", "text", array("label" => "Serienummer"));
}

em 在表单生成器上方创建,如下所示:

/**
 * @var EntityManager $em
 */
protected $em;

public function __construct($em) {
    $this->em = $em;
}

我确实用它来:

use Doctrine\ORM\EntityManager;

现在,当我尝试请求函数 buildForm 时,出现此错误:

Error: Call to a member function createQueryBuilder() on null" at mypath/SerialNumberType.php line 20

第 20 行代表 SerialNumberType.php 的这一部分:

$query = $this->em->createQueryBuilder();

我不知道为什么会这样。这与我的其他表单生成器中的相同。

【问题讨论】:

  • 查看使用您复制的表单的Controller。您应该看到 em 作为参数被传递到那里。如果是这样,请在另一个控制器中执行相同操作。
  • 你需要在服务容器配置中声明你的类及其需求
  • 我发现它感谢你@Artamiel。我需要使用 formbuilder 请求发送一个值!如果你回答这个问题,我可以接受。

标签: php symfony entity formbuilder


【解决方案1】:

正如我在评论中所说,当使用new MyForm() 初始化表单时,EntityManager 会从您的Controller 注入到表单中。您也可以使用第三个参数array $options = array() 传递实体管理器,在buildForm 中可以访问。

如果表单在配置文件中注册为服务,也可以注入管理器,从而在 arguments 选项中添加服务 ID。

所以,传递EntityManager 的方法有很多种,您只需要找出最适合您的那一种。在您的情况下,它应该在您的控制器中初始化时传递,或者作为配置文件中的参数传递。

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2016-08-20
    • 1970-01-01
    • 2016-05-02
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 2023-04-11
    相关资源
    最近更新 更多