奏鸣曲管理列表视图中数据集的分组视图

时间:2018-04-13 11:00:36

标签: symfony sonata-admin adminlte

我想知道是否有一种简单的方法来实现按“root”元素分组的数据集的组视图。 假设我有一个“人”实体。许多人可以拥有他们所属的“根”人。所以我会添加对人实体本身的引用。

现在我不想在平面列表视图中显示每个人。相反,我想只显示每个root用户,点击此数据集后,手风琴将与下属人员实体打开......这怎么可能?

没有手风琴也没关系,如果下属实体缩进了一点就足够了......

有人能给我一个线索,我应该遵循哪种方法?如果我可以重用大部分的奏鸣曲管理功能,特别是模板......

由于

1 个答案:

答案 0 :(得分:0)

过去正在解决类似问题。通过几个步骤完成了这项工作:

覆盖数据网格中的第一个字段

使用此代码,您说要使用my_custom_template.html.twig呈现此字段(在您的管理类中)。

protected function configureListFields(ListMapper $list)
{
    $list->add('yourFirstField', null, ['template' => 'my_custom_template.html.twig'])
}

为您的第一个字段启用过滤

为您的父字段(在您的管理类中)准备过滤

protected function configureDatagridFilters(DatagridMapper $filter)
{
    $filter->add('parent');
}

为第一个字段编写自定义模板

然后在您的自定义模板中,您可以使用点击链接设置过滤器值。

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} 
{% block field %}
    {% if object.isRoot %}
        <a href="{{ path('your_route_list", {'filter[name][parent]': object.id} }}">{{ object.name }}</a>
    {% else %}
        {{ object.name }}
    {% endif %}
{% endblock %}

稍后您可以覆盖break breadcrumbs构建器服务(https://sonata-project.org/bundles/admin/master/doc/reference/breadcrumbs.html)并在面包屑中创建好路径,以便用户可以导航。