fromholdio/silverstripe-minigridfield

安装数: 2,588

依赖项: 2

建议者: 1

安全性: 0

星标: 5

关注者: 3

分支: 3

开放问题: 0

类型:silverstripe-vendormodule

1.7.0 2024-07-22 05:37 UTC

This package is auto-updated.

Last update: 2024-09-22 06:05:17 UTC


README

一个预配置并温和主题化的 GridField 字段,以实现“迷你”内联网格字段。

包含两种字段类型

  • MiniGridField
  • HasOneMiniGridField - 使用此字段管理 has_one 关系中的对象

自动处理(预配置,开发者可使用一些标志)可排序的行、添加新多类、版本控制。

需求

安装

composer require fromholdio/silverstripe-minigridfield

截图

Empty

MiniGrid

MiniGrid limited

HasOneMiniGrid

完整示例

这是一个显示单对一、多对一和多对多的示例

use Fromholdio\MiniGridField\Forms\HasOneMiniGridField;
use Fromholdio\MiniGridField\Forms\MiniGridField;
use SilverStripe\Admin\ModelAdmin;
use SilverStripe\ORM\DataObject;

class TestAdmin extends ModelAdmin {
    private static $menu_title = 'Test';
    private static $url_segment = 'test';
    private static $managed_models = [
        Radio::class,
        Owner::class,
        Presenter::class,
        Listener::class,
    ];
}

class Radio extends DataObject {
    private static $db = ['Title' => 'Varchar'];
    private static $has_one = ['Owner' => Owner::class];
    private static $has_many = ['Presenters' => Presenter::class];
    private static $many_many = ['Listeners' => Listener::class];
    public function getCMSFields() {
        $fields = parent::getCMSFields();

        $fields->replaceField('OwnerID', HasOneMiniGridField ::create('Owner', 'Owner', $this));

        $fields->removeByName('Presenters');
        $fields->insertAfter('Title', MiniGridField::create('Presenters', 'Presenters', $this));

        $fields->removeByName('Listeners');
        $fields->insertAfter('Title', MiniGridField::create('Listeners', 'Listeners', $this));

        return $fields;
    }
}

class Owner extends DataObject {
    private static $db = ['Title' => 'Varchar'];
    private static $has_many = ['Radio' => Radio::class];
}

class Presenter extends DataObject {
    private static $db = ['Title' => 'Varchar'];
    private static $has_one = ['Radio' => Radio::class];
}

class Listener extends DataObject {
    private static $db = ['Title' => 'Varchar'];
    private static $belongs_many_many = ['Radios' => Radio::class];
}

全局替换 GridField

对于您希望用 MiniGridField 替换所有 GridField 的项目,您可以使用 注入器 在几行配置中完成此操作

SilverStripe\Core\Injector\Injector:
  SilverStripe\Forms\GridField\GridField:
    class: Fromholdio\MiniGridField\Forms\MiniGridField

感谢与致谢

还有几个,现在找不到,稍后将在这里列出。我已经努力使它按照我的意愿工作,但受到了一些优秀的人和他们代码的指导,谢谢。