0

我的 Symfony2 项目中有一个entity表单域。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('productId', 'genemu_jquerychosen_entity', array(
        'class' => 'EMRSabaBundle:Product',
        'property' => 'name'
    ))
    ;
}

Product实体有一些对象,如价格、名称、模式和 ID,我想让用户按名称选择产品并查看所选产品的价格,然后提交产品 ID,而不是名称。

有没有解决办法?

4

1 回答 1

3

根据此捆绑包的文档:

您可以使用 Symfony(选择、国家、...)和 Doctrine(ORM 和 ODM)中的所有核心选择类型,您只需在类型名称前加上genemu_jqueryselect2_*

这意味着您正在使用“常规”entity字段。property您可以通过跳过定义并依赖以下__toString()方法来做您想做的事情EMRSabaBundle:Product

[财产]

这是应该用于在 HTML 元素中将实体显示为文本的属性。如果留空,实体对象将被转换为字符串,因此必须具有 __toString() 方法。

将您的代码更改为:

$builder->add('productId', 'genemu_jquerychosen_entity', array(
        'class' => 'EMRSabaBundle:Product'
    ))

_toString()并在您的对象中定义方法EMRSabaBundle:Product如下:

public function __toString()
{
    return $this->name . ' (' . $this->price . ')';
}

http://symfony.com/doc/current/reference/forms/types/entity.html#property

于 2013-06-17T19:37:34.180 回答