我的Symfony2项目中有一个entity
表单字段。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('productId', 'genemu_jquerychosen_entity', array(
'class' => 'EMRSabaBundle:Product',
'property' => 'name'
))
;
}
Product
实体有一些对象,如价格,名称,模式和& ID
我想让用户按名称选择产品。查看所选产品的价格,然后提交产品ID,而不是名称。
有解决方法吗?
答案 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