我有一个形式,该表格在symfony2中填充了 Project
学说实体。
假设字段是:
Name: ______________
Customer: ____________
其中 Customer
是另一个学说实体。
我的问题是,我无法设法检索客户实体。我尝试根据ID(例如字段成为客户ID)来检索它,然后在预科活动的侦听器中,将$project->customer
与检索到的实体设置,但对我来说似乎过高。
我要做的就是以下内容:
- 显示一个带有可用
Customer
实体的列表框作为客户字段(以Project
表格) - 在数据库中,用所选客户的ID填充客户ID字段(在项目表中)
我知道这一定很简单,只需使用PHP/MySQL和一些外键即可设置3分钟,但是我根本不知道使用Symfony2/的最佳方法学说(在尊重标准并且不看起来意大利面的方式中的意思)。
所以,我的问题:
- 我应该在
MyBundleFormProjectType->buildForm()
函数中声明什么? - 我应该如何检索所选的客户实体,我应该在目录结构(控制器,实体,预科活动听众...)? 中在哪里进行此操作。
谢谢。
刚找到答案。这真的很简单:)
在mybundle/form/projectType.php中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('customer', 'entity', array(
'class' => 'MeBundleMyBundleEntityCustomer',
'property' => 'name'));
}
然后在project.orm.yml(是的,我喜欢yaml):
manyToOne:
customer:
targetEntity: Customer
joinColumn:
name: customerId
referencedColumnName: id
nullable: false
最后,在customer.orm.yml:
oneToMany:
projects:
targetEntity: Project
mappedBy: customer
就是这样!Symfony2照顾一切。只是普通的魔术。