我有两个具有一些属性的实体:
子类别实体中存在ManyToOne关系,即几个子类别可以连接到一个类别。
我想构建一个带有下拉列表所有子类别的表单,但我想显示类别和子类别的名称,列表看起来如下:
我正在考虑在子类别类中创建一个getter,它将返回类别名称和子类别名称的串联,类似于sprintf('%s - %s',$ this-> categoryName,$ this- > subcategoryName),但我无法看到如何使用子类别类getter访问Category对象属性...
有关实现此目标的最佳做法的想法吗?
谢谢你, JM
答案 0 :(得分:3)
我设法通过构建如下表单来实现这一目标:
$builder
->add('subcategoryName', EntityType::class, array(
'class' => 'AppBundle:subcategory',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->addSelect('t')
->join('u.category', 't' )
->orderBy('t.category', 'ASC')
->addOrderBy('u.subcategory', 'ASC');
},
'choice_label' => function($subcategoryname){
return $categoryname->getcategory()->getcategoryname() . " - " . $subcategoryname->getsubcategoryName();
},
'multiple' => false,
'expanded' => false,
))
我只是用choice_label选项搞砸了。
/ JM
答案 1 :(得分:0)
您显然可以使用此方法。当您拥有子类别表的IdCategory时,您也可以访问类别表的字段
->add('idCategory', EntityType::class,array(
'data' => $options[0]['idCategory'],
'class' => 'AppBundle:subcategory',
'choice_label' => function (subcategory $subcategory) {
return $subcategory->getName() . '-' . $subcategory->getCategoryID()->getName().'-'.$subcategory->getCategoryID()->getDescription();
},
'attr' => array(
'label' => 'Category ',
'class' => 'form-control'
)
))