heyday/silverstripe-versioneddataobjects

此包的最新版本(2.0.5)没有可用的许可证信息。

为 SilverStripe 提供版本化 DataObjects

安装次数: 163,462

依赖项: 6

建议者: 0

安全: 0

星标: 21

关注者: 29

分支: 24

开放问题: 2

类型:silverstripe-module

2.0.5 2017-03-21 21:22 UTC

README

此模块提供了一个易于使用的实现,为 SilverStripe 内置的 Versioned 扩展 DataObjects,并附带管理版本化内容的组件。

重要:DataObjects 的版本化是 SilverStripe 4.x 及更高版本中 Versioned 扩展的内置功能。

Versioned DataObject Example Versioned DataObject Example 2

安装(使用 composer)

$ composer require heyday/silverstripe-versioneddataobjects

用法

VersionedDataObject 扩展将用于页面的草稿/发布版本化添加到您自己的 DataObjects 以及它们的所有子类。只有具有此扩展的 DataObjects 表中的字段才会进行版本化。如果需要,相关 DataObjects 需要单独应用 VersionedDataObject

class Slice extends DataObject
{
	private static $db = [
		'Content' => 'Text'
	];

	private static $has_one = [
		'Parent' => 'SiteTree'
	];

	private static $extensions = [
		'Heyday\VersionedDataObjects\VersionedDataObject'
	];
}

网格字段中的版本化 DataObjects

要在 GridField 中使用 VersionedDataObject 记录,需要将 GridFieldDetailForm 替换为 VersionedDataObjectDetailsForm

// ...

public function getCMSFields()
{
	$fields = parent::getCMSFields();

	$fields->addFieldToTab(
		'Root.Slices',
		new GridField(
			'Slices',
			'Slices',
			$this->Slices(),
			$config = GridFieldConfig_RelationEditor::create()
		)
	);

	$config->removeComponentsByType('GridFieldDetailForm');
	$config->addComponent(new Heyday\VersionedDataObjects\VersionedDataObjectDetailsForm());

	return $fields;
}

// ...

模型管理员中的版本化 DataObjects

class SliceAdmin extends Heyday\VersionedDataObjects\VersionedModelAdmin
{
	private static $menu_title = 'Slices';

	private static $url_segment = 'slice';

	private static $managed_models = [
		'Slice'
	];
}

注意事项/故障排除

SilverStripe 的版本化系统使用全局状态来跟踪一个影响所有 Versioned 扩展使用的 “读取模式”,该模式影响从哪些表读取和写入记录。这适用于网站的前端,您期望看到当前选定的阶段,但如果未进行调整,它也会改变 CMS 中可见的记录。此模块提供的组件通过始终在 CMS 中显示草稿记录来解决这个问题。

如果您可以控制 ORM 查询,可以使用 DataQuery 参数来更改 Versioned 的行为,以覆盖全局读取模式设置。

VersionedFoo::get()
	->setDataQueryParam(['Versioned.stage' => 'Stage']);

如果您无法修改查询,可以使用此模块中的 VersionedReadingMode 来更改和恢复代码周围的全球读取模式。

VersionedReadingMode::setStageReadingMode();

// ... code that runs queries

VersionedReadingMode::restoreOriginalReadingMode();

如果您怀疑可能是由于不正确的读取模式导致的问题,可以通过将查询字符串 ?stage=Stage?stage=Live 添加到当前 URL 来在 livestage 之间更改全局读取模式。

BetterButtons 兼容性

此模块与 unclecheese/betterbuttons 版本 1.2.8 兼容。

单元测试

无 :)

##许可证

SilverStripe Versioned DataObjects 使用 MIT 许可证 许可。