【发布时间】: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