我正在创建一个包含基于实体的字段的表单,我尝试使用数据选项设置默认值,并根据问题here和here的答案选择首选项,我尝试从控制器注入实体管理器并获取表单类型中的实体,我也尝试直接注入实体...仍然无法正常工作。
我想知道问题是否是由query_builder引起的,我在创建字段时将其传入选项(我用它来避免重复,因为group_by没有做到这一点)。这里是表格的代码:
看全班:
http://pastebin.com/sx4du0Eb
提交的一个例子:
->add('quantite', 'entity', array(
'class' => 'CcWebBundle:Brochure',
'property' => 'quantite',
'multiple' => false,
// utilisation d'une requête pour filtrer les resultats
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->groupBy('u.quantite');
}
))
答案 0 :(得分:0)
我认为主要问题在于表单本身。您确定您的宣传册实体上的每个属性都是宣传册的实例吗?
->add('quantite', 'entity', array(
'class' => 'CcWebBundle:Brochure',
'property' => 'quantite',
'multiple' => false,
// utilisation d'une requête pour filtrer les resultats
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->groupBy('u.quantite');
}
))
我想你想在这里设定数量?如果是这样,那应该是一个数字:
->add(
'quantite',
'number'
)
如果要设置关系(例如手册的类型),则使用实体字段类型,并且您有一个指向Brochure和BrochureType的manyToOne。纠正所有表单域后,设置表单的默认值应该简单如下:
public function newAction()
{
$brochure = new Brochure();
$brochure->setQuantite(5);
$form = $this->createForm(new BrochureType(), $brochure);
// ..
}