Symfony Doctrine Extensions未显示父子列表

时间:2016-11-03 14:25:45

标签: php symfony doctrine-orm doctrine doctrine-extensions

我在symfony gedmo doctrine extensions中遇到了父子列表视图的问题。 我的列表显示了同一级别的所有内容,我不知道如何解决它。 我尝试使用datagridvalueslft字段排序,但它无效。

我的category.orm.yml文件

Application\AdminBundle\Entity\Category:
  type: entity
  table: Category
  gedmo:
    tree:
      type: nested
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    name:
      type: string
      length: 255
    image_url:
      type: string
      length: 255  
    slug:
      type: string
      nullable: false
      unique: true

    lft:
      type: integer
      gedmo:
        - treeLeft
    rgt:
      type: integer
      gedmo:
        - treeRight
    root:
      type: integer
      gedmo:
        - treeRoot
    lvl:
      type: integer
      gedmo:
        - treeLevel

  oneToMany:
    children:
      targetEntity: Category
      mappedBy: parent
  manyToOne:
    parent:
      targetEntity: Category
      inversedBy: children
      gedmo:
        - treeParent
      joinColumns:
        Category_id:
          referencedColumnName: id
  lifecycleCallbacks: {  }

我的configureListFields方法:

protected function configureListFields(ListMapper $listMapper)
{

    $listMapper
    ->add('id')
    ->add('name')
    ->add('slug')
    ;
}

我的列表视图如图像List view

1 个答案:

答案 0 :(得分:0)

我和这个人打得太久了;)

我在一些codeproject的文章中发现,奏鸣曲管理员不支持树结构渲染(文章来自2012年,所以可能有些事情发生了变化)。 无论如何,我的解决方案很简单

category.php我添加了

public function __toString()
{
    $prefix = '';
    for ($i=1; $i<= $this->lvl; $i++){
        $prefix .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    }
    return $prefix . $this->name;
}

public function getLaveledTitle()
{
    return (string)$this;
}

并在CategoryController.php configureListFields方法{i}已将name字段更改为

    $listMapper
     //if you will not add 'html' as field type `&nbsp` will not be parsed as html
    ->add('laveled_title', 'html', array(
            'strip' => true,
            'label' => 'Category Name'
    ))
    ;