Symfony2基于实体的表单字段的默认值

时间:2013-11-29 15:55:48

标签: php symfony

我正在创建一个包含基于实体的字段的表单,我尝试使用数据选项设置默认值,并根据问题herehere的答案选择首选项,我尝试从控制器注入实体管理器并获取表单类型中的实体,我也尝试直接注入实体...仍然无法正常工作。 我想知道问题是否是由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');
                                    }
                  ))

1 个答案:

答案 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);
    // ..
}