Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Symfony2,条令扩展树:生成一个;“树”-类似下拉选择列表_Html_Forms_Symfony_Doctrine Orm - Fatal编程技术网

Html Symfony2,条令扩展树:生成一个;“树”-类似下拉选择列表

Html Symfony2,条令扩展树:生成一个;“树”-类似下拉选择列表,html,forms,symfony,doctrine-orm,Html,Forms,Symfony,Doctrine Orm,我有一个类别表,用树结构构建,使用条令树扩展 看起来像这样 id parent_id title lft lvl rgt root 864 (NULL) Movies 1 0 18 864 865 864 Packs 2 1 3 864 866 864 Dubbed 4 1 5 864 视觉上是这样的: Movies | | |->Packs |->Dubbed 现在我想生成一个表单,用于添加评论,并将类别作为每个电影的下拉列

我有一个类别表,用树结构构建,使用条令树扩展 看起来像这样

id  parent_id   title   lft lvl rgt root
864 (NULL)  Movies  1   0   18  864
865 864 Packs   2   1   3   864
866 864 Dubbed  4   1   5   864
视觉上是这样的:

Movies
|
|
|->Packs
|->Dubbed
现在我想生成一个表单,用于添加评论,并将类别作为每个电影的下拉列表加载,所以我在我的电影评论表单类型类中

public function buildForm(FormBuilder $builder, array $options)
{

    $builder->add('name');
    $builder->add('file');
    $builder->add('cover');
    $builder->add('category','entity',           array('class'=>'Tracker\MembersBundle\Entity\Category', 'property'=>'title', ));           
}
这将生成一个正常的下拉菜单,如下所示:

Movies
|
|
|->Packs
|->Dubbed

如何配置我的菜单设置,使其生成一个类似于树的下拉选择,如下所示


我不确定这是个好主意:用户将无法键入他们的选择

尚未测试此解决方案,但它应该可以工作:

首先,您可以按根和lft值对这三个值进行排序以正确显示,因此添加一个查询生成器:

'query_builder' => function($er) {
    return $er->createQueryBuilder('c')
        ->orderBy('c.root', 'ASC')
        ->addOrderBy('c.lft', 'ASC');
},
然后,需要向实体添加
getIndentedTitle
方法:

public function getIndentedTitle() {
    return str_repeat("--", $this->lvl).$this->title;
}
最后,在生成表单时,将属性选项添加到选项中,以显示虚拟属性indentedTitle而不是title:

'property' => 'indentedTitle'
见: