我想知道是否有一种简单的方法来实现按“root”元素分组的数据集的组视图。 假设我有一个“人”实体。许多人可以拥有他们所属的“根”人。所以我会添加对人实体本身的引用。
现在我不想在平面列表视图中显示每个人。相反,我想只显示每个root用户,点击此数据集后,手风琴将与下属人员实体打开......这怎么可能?
没有手风琴也没关系,如果下属实体缩进了一点就足够了......
有人能给我一个线索,我应该遵循哪种方法?如果我可以重用大部分的奏鸣曲管理功能,特别是模板......
由于
答案 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)并在面包屑中创建好路径,以便用户可以导航。