Symfony2实体选择问题

时间:2013-06-17 17:46:51

标签: php forms symfony entity

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

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

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

有解决方法吗?

1 个答案:

答案 0 :(得分: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