cwbit/cakephp-revisions

为 CakePHP 3 开发的版本跟踪插件。在 CakeFest2015 上开发。

安装次数: 1,224

依赖者: 0

建议者: 0

安全性: 0

星标: 7

关注者: 3

分支: 1

公开问题: 2

类型:cakephp-plugin

dev-master 2015-05-30 13:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:42:34 UTC


README

CakePHP Revisions 插件(CakeFest 2015)

为 CakePHP 3.x 开发的插件,允许您跟踪应用程序中表(在实体级别)的版本更改

要求

安装

[使用 Composer]

将插件添加到项目中的 composer.json 文件 - 例如这样

{
	"require": {
		"cwbit/cakephp-revisions": "dev-master"
	}
}

由于此插件在其自己的 composer.json 中设置了类型 cakephp-plugin,所以 Composer 会将其安装到您的 /plugins 目录(而不是通常的 'Vendor' 文件夹)。建议您将 /plugins/Revisions 添加到 cake 应用程序的 .gitignore 文件中。(为什么?请阅读此内容。)

[手动]

  • 下载并解压仓库(请在此 git 页面上某个位置找到下载按钮)
  • 将生成的文件夹复制到 plugins
  • 将您刚刚复制的文件夹重命名为 Revisions

[GIT 子模块]

在您的 app 目录中输入

git submodule add -b master git://github.com/cwbit/cakephp-revisions.git plugins/Revisions
git submodule init
git submodule update

[GIT 克隆]

在您的 plugins 目录中输入

git clone -b master git://github.com/cwbit/cakephp-revisions.git Revisions

启用插件

在 3.0 中,您需要在 config/bootstrap.php 文件中启用插件

    Plugin::load('Revisions');

如果您已经使用了 Plugin::loadAll();,则此步骤不是必需的。

用法

将行为添加到您想要跟踪版本的所有表中

  1. 跟踪任何/所有版本
  2. 显式监视特定字段的更改(白名单)
  3. 忽略对某些字段的更改(黑名单)

基本实现

基本实现将在实体上的任何字段被修改时触发。

	public function initialize(){
		parent::initialize();
		
		$this->addBehavior('Revisions.Revisions');
	}

WATCHed 实现

您还可以明确告诉插件仅在特定字段(如指定字段)被修改时触发版本控制。

	public function initialize(){
		parent::initialize();
		
		$this->addBehavior('Revisions.Revisions', [
			'watch' => [
				'name', # trigger if,
				'foo',  # and only if, 
				'bar'	# any of these fields are changed 
				],   
			]);
	}

IGNOREd 实现

您还可以明确告诉插件忽略对某些字段的修改。只有在至少有一个其他(非忽略的)字段已更改时,版本控制才会触发。

	public function initialize(){
		parent::initialize();
		
		$this->addBehavior('Revisions.Revisions', [
			'ignore' => [
				'bigBlob',  # only trigger if something 
				'created',  # OTHER than these fields 
				'modified', # was changed
				],   
		]);
	}

添加版本审查

该插件还提供了查看所有版本和恢复到任何指定时间点的功能。

要启用此功能,请将以下行添加并自定义任何视图

<?= $this->Element('Revisions.Revisions/index', [
		'id' => $entity->id, 	# replace with actual entity variable
		'model' => 'examples',	# replace with actual model
		'limit' => 10,			# optional
	]);?>