【发布时间】:2014-06-12 14:46:50
【问题描述】:
我有一个包含自引用映射的实体。
class Category
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=100)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
*/
private $children;
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
}
在我的 CategoryType 中,我有这个:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$plan = $this->plan;
$builder->add('name');
$builder->add('parent', 'entity', array(
'class' => 'xxxBundle:Category',
'property' => 'name',
'empty_value' => 'Choose a parent category',
'required' => false,
'query_builder' => function(EntityRepository $er) use ($plan) {
return $er->createQueryBuilder('u')
->where('u.plan = :plan')
->setParameter('plan', $plan)
->orderBy('u.id', 'ASC');
},
));
}
实际上,当我呈现表单字段类别时,这类似于
- Cat1
- 二类
- Cat3
- 子目录1
- 子类2
- Cat4
我想知道这是否可能以及如何显示更像是一种简单的树表示:
- Cat1
- 二类
- Cat3
- --子目录1
- --子类2
- Cat4
问候。
【问题讨论】:
-
你能分享你的渲染代码吗?
-
我想说你应该使用Tree Doctrine Extension。因为它避免了嵌套实体的麻烦。但是,我不确定它会解决您的问题:/
标签: forms symfony self-reference