如何从非相关实体(Symfony2)创建实体表单类型



例如,如果您得到以下实体和关系:

已购买服务*--->1项服务*--->1项服务类别

如何创建一个表单类型,列出PurchasedServiceType中ServiceCategory的所有条目?

As:

$builder
->add('servicecategory', 'entity', array(
'class' => 'InvoicingBundle:ServiceCategory',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('sc')
->orderBy('sc.serviceCategoryName', 'ASC');
},
))

导致错误:

属性"servicecategory"和其中一个方法"getServicecategory()"、"isServicecategory[()]"、"hasServicecategory-[()'","__get()"在…中存在并具有公共访问权限

我希望直接调用实体服务类别?

它应该。但我觉得你错过了名称空间。在您的情况下,您有:

'class' => 'InvoicingBundle:ServiceCategory',

InvoicingBundle总是本地化在某个目录中-您应该有src/{theMissingDirectory}/InInvoicingbundle/Entity/ServiceCategory,所以模式是:

'class' => '{theMissingDirectory}InvoicingBundle:ServiceCategory',

例如:

'class' => 'AcmeInvoicingBundle:ServiceCategory',

请用这种方法试试,它会起作用的。

问候,