首页 > 解决方案 > 有没有办法在 Silverstripe 4 中为 ModelAdmin 管理同一个表中的多个模型?

问题描述

目前,我在同一个模型管理员中管理多个模型,但它们在模型管理页面的不同选项卡中进行管理。我想知道是否有办法将所有模型组合到同一个表中,因为数据有些相似。这将为在 CMS 中工作的任何人节省每次都必须更改选项卡的时间。我还在 gridfield 过滤器标题中设置了过滤器,如果我能让它工作的话,可以使排序和过滤变得更加容易。

这就是我目前正在做的事情。

<?php

class ReportsAdmin extends ModelAdmin
{
    private static $url_segment = 'reports';
    private static $menu_title = 'Reports';
    private static $menu_icon_class = 'cms-icon-drawer';
    private static $managed_models = [
        Model1::class,
        Model2::class,
        Model3::class,
        Model4::class,
        Model5::class,
    ];

    public function getEditForm($id = null, $fields = null)
    {
        $form = parent::getEditForm($id, $fields);
        $grid = $form->Fields()->fieldByName($this->sanitiseClassName($this->modelClass));
        $list = $grid->getList();
        $grid->setList($list);
        $grid->getConfig()->removeComponentsByType(GridFieldAddNewButton::class);
        $grid->getConfig()->removeComponentsByType(GridFieldImportButton::class);
        $grid->getConfig()->addComponent(new GridFieldExportButton());

        return $form;
    }
}

我希望它是这样的,全部在一页中。

  Col 1   | Col 2 | Col 3
  Model 1 | Data  | Data  
  Model 4 | Data  | Data  
  Model 2 | Data  | Data  
  Model 3 | Data  | Data
  Model 5 | Data  | Data  

php 7.3,银条 4.3.1

标签: phpmodelsilverstripesilverstripe-4

解决方案


推荐阅读