flxlabs/silverstripe-versionedrelations

启用多对多关系的版本控制和回滚

安装数: 1,211

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 1

类型:silverstripe模块

0.1.14 2018-06-21 13:37 UTC

This package is auto-updated.

Last update: 2024-09-29 03:52:35 UTC


README

本模块提供对silverstripe数据对象的多种关系(多对多、一对多和一对一)进行版本控制和回滚的功能。

使用方法

主要类

class MyObject extends DataObject {

    private static $extensions = array(
        'Versioned',
        'VersionedRelationsExtension',
    );

    private static $versioned_many_many = array(
        'MMRelations' => 'MyRelatedObjectX',
    );
    private static $versioned_has_many = array(
        'HMRelations' => 'MyRelatedObjectY',
    );
    private static $versioned_has_one = array(
        'HORelation' => 'MyRelatedObjectZ',
    );

    // optionally add extra fields for many-many relations
    private static $many_many_extraFields = array(
        'Relations' => array(
            'MyExtra' => 'Int',
        ),
    );

}

MyRelatedObjectX类(多对多)

class MyRelatedObjectX extends DataObject {

    private static $extensions = array(
        'Versioned',
        'VersionedRelationsExtension',
    );

    private static $versioned_belongs_many_many = array(
        'MainClasses' => 'MainClass',
    );

    /*
     * NOTE:
     * If you use the betterbuttons module,
     * get rid of the versioning buttons like this:
     */
    public function getBetterButtonsActions() {

        $fieldList = FieldList::create(array(
            BetterButton_SaveAndClose::create(),
            BetterButton_Save::create(),
        ));
        return $fieldList;

    }
}

MyRelatedObjectY类(一对多)

class MyRelatedObjectY extends DataObject {

    private static $extensions = array(
        'Versioned',
        'VersionedRelationsExtension',
    );

    private static $versioned_belongs_has_many = array(
        'MainClass' => 'MainClass',
    );

}

MyRelatedObjectZ类(一对一)

class MyRelatedObjectY extends DataObject {

    private static $extensions = array(
        'Versioned',
        'VersionedRelationsExtension',
    );

    private static $versioned_belongs_to = array(
        'MainClass' => 'MainClass',
    );

}

获取版本化关系

$this->getVersionedRelation('Relations');

…

待办事项

  • 检查关系的删除和主类
  • 检查同一类中的多个关系(点表示法)
  • 添加Silverstripe 4兼容性