stuki / workspace
Doctrine 2 工作空间
Requires
- php: >=5.3.0
- doctrine/doctrine-module: 0.*
- doctrine/doctrine-orm-module: 0.*
- zendframework/zendframework: >=2.1
Requires (Dev)
- phpunit/phpunit: 3.7.14
- zf-commons/zfc-user: 0.1.1
- zf-commons/zfc-user-doctrine-orm: dev-master
This package is auto-updated.
Last update: 2024-09-11 14:05:58 UTC
README
这是一个 Doctrine 2 的工作空间模块。此模块为每个用户创建一个实体,指定工作空间的目标,以便用户在自己的工作空间内工作。用户可以从任何修订版请求将工作空间合并到主分支。
关于
此模块接受工作空间中要包含的实体配置,并创建实体以将它们放入工作空间。放入工作空间的实体成为每个用户的个人工作空间。随着用户创建、更新和删除数据,这些更改将记录在他们的工作空间中。用户可以请求将他们的工作空间合并到主分支。合并请求由特权用户处理。随着修订版的批准,它们将合并到主数据库中。
这是通过评估在从 ORM 获取每个实体时完成的。实体将更改为当前用户在其工作空间内的最新修订版。
安装
使用 composer 需要工作空间
php composer.phar require "stuki/workspace": "dev-master"
在 config/application.config.php
中启用工作空间
return array( 'modules' => array( 'Workspace' ... ),
将 config/workspace.global.php.dist
复制到 config/autoload/workspace.global.php
并编辑设置
return array( 'workspace' => array( 'datetimeFormat' => 'r', 'paginatorLimit' => 20, 'tableNamePrefix' => '', 'tableNameSuffix' => '_workspace', 'revisionTableName' => 'Revision', 'revisionEntityTableName' => 'RevisionEntity', 'entities' => array( 'Db\Entity\Song' => array(), 'Db\Entity\Performer' => array(), ), ), );
使用 Doctrine 命令行工具更新数据库并创建工作空间表
vendor/bin/doctrine-module orm:schema-tool:update
术语
WorkspaceEntity - 一个生成的实体,它映射到可工作空间的 Target 实体。此存储在创建修订版时 Target 实体的值。
Revision - 一个存储时间戳、注释和用户的实体,它包含一个包含可工作空间实体的单个实体管理器刷新。
RevisionEntity - 一个映射实体,它将 WorkspaceEntity 映射到修订版并将其映射到 Target 工作空间实体。此实体可以重新激活 Target 实体和 WorkspaceEntity。此实体还存储在 Target 工作空间时修订版类型。INS、UPD 和 DEL 分别映射到插入、更新和删除。Target 的主键存储为数组,可用于重新激活 Target。
Target 实体 - 在工作空间配置中指定为字符串的可工作空间实体。
身份验证
您可以为映射修订版到用户的用户实体配置一个自定义实体。您也可以配置自定义身份验证服务。默认情况下,这些映射到 ZfcUserDoctrineORM\Entity\User 和 zfcuser_auth_service。例如,要使用自定义实体和服务 Db\Entity\User 以及 Zend\Authentication\AuthenticationService,可以这样操作。
用户实体必须实现 getDisplayName、getId 和 getEmail。身份验证服务必须实现 hasIdentity 和 getIdentity,它返回当前用户实体的一个实例。
接口未使用,因此可以直接使用 ZfcUser。
路由
要将路由映射到工作空间实体,请在工作空间 => 实体配置中包含路由信息
'Db\Entity\Song' => array(
'route' => 'default',
'defaults' => array(
'controller' => 'song',
'action' => 'detail',
),
),
工作空间实体中的标识符列值将添加到默认值中,通过路由生成 URL。
<?php
$options = $this->workspaceEntityOptions($revisionEntity->getTargetEntityClass());
$routeOptions = array_merge($options['defaults'], $revisionEntity->getEntityKeys());
?>
<a class="btn btn-info" href="<?=
$this->url($options['route'], $routeOptions);
?>">Data</a>
这是从您的应用程序映射到其当前修订版实体的方法
<a class="btn btn-info" href="<?=
$this->url('workspace/revision-entity',
array(
'revisionEntityId' => $this->workspaceCurrentRevisionEntity($workspaceedEntity)->getId()
)
);
?>">
<i class="icon-globe"></i>
</a>
视图助手
返回工作空间服务。这是一个辅助类。该类也可以通过依赖注入工厂 workspaceService
获取。此类提供以下功能
-
setComment(); 设置下一次工作空间事务的注释。当设置注释时,它将在创建工作空间修订版时读取并添加为注释。
-
getWorkspaceEntityValues($workspaceEntity); 返回给定工作空间实体的所有字段及其值。不包括多对多关系。
-
getEntityIdentifierValues($entity); 返回实体的所有标识键及其值。
-
getRevisionEntities($entity) 返回给定工作空间实体或修订实体所有的修订实体。
$view->workspaceService();
```
Return the latest revision entity for the given entity.
```
$view->workspaceCurrentRevisionEntity($entity);
```
Return a paginator for all revisions of the specified class name.
```
$view->workspaceEntityPaginator($page, $entityClassName);
```
Return a paginator for all RevisionEntity entities for the given entity or
a paginator attached to every RevisionEntity for the given workspaceed entity class.Pass an entity or a class name string.
```
$view->workspaceRevisionEntityPaginator($page, $entity);
```
Return a paginator for all Revision entities.
```
$view->workspaceRevisionPaginator($page);
```
Returns the routing information for an entity by class name
```
$view->workspaceEntityOptions($entityClassName);
```
Titling
-------
If an entity has a __toString method it will be used to title an workspace entity limited to 256 characters and stored in the RevisionEntity.
Inspired by SimpleThings