heyday / silverstripe-versioneddataobjects
为 SilverStripe 提供版本化 DataObjects
Requires
- composer/installers: ~1.0
Requires (Dev)
- phpunit/phpunit: ~3.7
README
此模块提供了一个易于使用的实现,为 SilverStripe 内置的 Versioned
扩展 DataObjects,并附带管理版本化内容的组件。
重要:DataObjects 的版本化是 SilverStripe 4.x 及更高版本中 Versioned
扩展的内置功能。
安装(使用 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 来在 live 和 stage 之间更改全局读取模式。
BetterButtons 兼容性
此模块与 unclecheese/betterbuttons
版本 1.2.8
兼容。
单元测试
无 :)
##许可证
SilverStripe Versioned DataObjects 使用 MIT 许可证 许可。