【问题标题】:Symfony2 form builder entity (not mapped) setting value (data) not workingSymfony2 表单构建器实体(未映射)设置值(数据)不起作用
【发布时间】:2015-01-11 23:48:50
【问题描述】:

我在设置默认值时在表单生成器中遇到问题,我创建了未映射列表,我想像这样设置默认值:

        ->add('kuponaiSuppliers', 'entity', array(
            'class' => 'CMSBundle:KuponaiUsers',
            'label'=> "Supplier:",
            'data'=>5,
            'query_builder' => function(EntityRepository $er) use ($options) {
                    return $er->createQueryBuilder('ku')
                        ->select("ku")
                        ->andWhere("ku.delDate is null")
                        ->andWhere("ku.id > 1");
                },
            'property'=> 'name',
            'multiple' => false,
            'expanded' => false,
            'required' => true,
            'mapped' => false
        ))

但在我看来,它只是列出,没有任何选定的选项:

<select id="acme_cmsbundle_kuponaimain_kuponaiSuppliers" name="acme_cmsbundle_kuponaimain[kuponaiSuppliers]">
    <option value="2">Supplier 1</option>
    <option value="5">Supplier 2</option>
    <option value="6">Supplier 3</option>
</select>

我认为 data 属性必须设置默认值,但它没有。

树枝代码:

<tr>
<td colspan="3">{{ form_label(form.kuponaiSuppliers) }}{{ form_widget(form.kuponaiSuppliers) }}</td>
</tr>

【问题讨论】:

  • 你能告诉我们你的树枝代码吗?

标签: symfony default-value formbuilder


【解决方案1】:

你需要获取你想成为默认对象的引用。

'data' => $this->em->getReference("CMSBundle:KuponaiUsers", 5) // 5 will be the default.

$this-&gt;em 指向实体管理器。可以是控制器中的$this-&gt;getDoctrine()-&gt;getManager()

如果您使用的是 FormType 类,则必须注入实体管理器。如果您在控制器中创建表单,则可以毫无问题地访问实体管理器。

EntityManager#getReference($entityName, $identifier) 方法可以让您获得对已知标识符的实体的引用,而无需从数据库中加载该实体。

应该可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2018-04-20
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多