liip / drupalcrudadminmodule
为Drupal 7提供通用的CRUD管理界面。
Requires
- php: >=5.3.8
- beberlei/assert: ~1.5
- liip/drupalconnectormodule: dev-master
- liip/drupaleventmanagermodule: dev-master
- liip/drupalregistrymodule: dev-master
Requires (Dev)
- lapistano/proxy-object: dev-master
This package is not auto-updated.
Last update: 2024-09-10 03:03:54 UTC
README
本模块的核心理念是提供一个最前沿的标准实现来处理CRUD操作。这是通过提供一个基础模块来实现的,该模块可以被其他模块使用,以提供从数据源持久化和读取数据的功能。所谓“最前沿”是指,如果满足多个预期,该模块将自行处理每个CRUD操作。此外,它还提供了一组自定义钩子来替换或增强这些操作。此外,它会在每次主要操作(如:创建、读取、更新、删除和列表)之后发出事件,传递当前操作的完整作用域。
当前仓库状态
安装
现在源代码是PSR-0兼容的。没有特定的安装流程需要遵循。只需将源代码克隆或检出到您的项目中,然后使用它。如果您不使用PSR-0兼容的自动加载器,您只需将bootstrap.php
添加到您的引导程序或自动加载器中。
Composer
将以下行添加到您的composer.json
文件中,并更新您项目的Composer安装。
{ "require": { "liip/drupalcrudadminmodule": "dev-master" } }
此Composer配置将检出项目的“最新版本”('dev-master')。请注意,有时这可能会损坏。
注意:如果您不知道这意味着什么,请访问Composer项目网站开始了解。
Github
因此,我建议使用Composer的方式将liip/drupalcrudadminmodule作为项目依赖项。源代码也通过GitHub提供。只需像您所熟悉的那样克隆它。
$ git clone git://github.com/liip/liipdrupalcrudadminmodule.git
依赖项
- LiipDrupalConnector (http://github.com/liip/liipdrupalconnector)
- LiipDrupalRegistryModule (http://github.com/liip/liipdrupalregistrymodule)
- Assert (http://github.com/beberlei/assert)
使用方法
必选自定义钩子
为了避免处理存储和检索数据的能力或表单提交时的处理流程,定义了一系列必选钩子。这些钩子必须由消费模块提供。drupalcrudadminmodule会验证这些模块的存在。
hook_get»EntityName«s()
此钩子应提供从任何数据源获取的实体列表。它还必须确保涉及到的实体符合Liip\Drupal\Modules\CrudAdmin\Entities\EntityInterface接口定义的预期。这是为了确保实体在生成概览表时的正确行为。
例如。
$organisations = module_invoke('organisationsmanager', 'getOrganisations');
hook_get»EntityName«ById()
预期实体唯一的标识符,返回预置的实体或如果实体未找到则抛出异常。确保实体在生成概览表时的正确行为。
例如。
$organisation = module_invoke('organisationsmanager', 'getOrganisationById', $uniqueId);
hook_delete»EntityName«()
此钩子将由删除动作的处理程序调用。其一般目的是实际执行具有给定唯一标识符的实体的删除操作。
例如。
$succeed = module_invoke('organisationsmanager', 'deleteOrganisation', $uniqueId);
hook_submitHandler()
提交处理器是唯一一个实际上向未在任何情况下更改的CRUD管理模块注入功能的自定义钩子。它替换了消耗模块的hook_form_submit(),应以相同的方式实现。
hook_getModuleNamespaces()
此自定义钩子应提供一组用于使用实体、注册和模块基本命名空间的命名空间。
例如:
function drupalcrudadminmodule_getModuleNamespaces() { return array( 'base' => '\\Liip\\Drupal\\Modules\\CrudAdmin', 'entities' => '\\Liip\\Drupal\\Modules\\CrudAdmin\\Classes\\Entities', ); }
可选的自定义钩子
在crudadminmodule中,可选的自定义钩子有工作表示。以下钩子将在过程中的不同发生时被调用。如果它们在消耗模块中不存在或没有返回预期的格式,则将采用默认实现来提供某种类型的后备解决方案。
hook_generateEditForm()
此钩子应生成表示当前实体编辑表单的表单数组。请记住,实体由消耗模块定义,可能不同于默认值。在这种情况下,钩子定义了用于添加和修改实体的替代表单。如果没有实现,则将生成一个默认表单,仅覆盖实体的标题和描述。
除了默认或自定义表单之外,还会向表单中添加一组额外的字段,以定义当前操作的范围。这些字段是
- 模块名称
- 实体名称
- 如果表单用于修改实体,则标识符。
请勿删除或修改这些字段,因为它们对于过程是必需的。
hook_generateOverviewTable()
一旦实现,此可选钩子应提供一组表格行,代表要展示的实体数据,适合Drupal 7提供的表格模板(https://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7)。与Drupal 7的不同之处在于,定义实体实现的操作列(如删除或编辑)不得添加。这将由基本模块处理,因为需要创建多个链接。基本模块可以识别没有要显示的实体信息,并显示特殊消息。如果您想更改此消息,请使用Drupal管理进行更改。搜索
LIIP_DRUPAL_CRUD_ADMIN_MODULE_NO_ENTITY
但不要删除%entity
占位符,如果您仍然希望显示实体名称。
此钩子也可以用来限制显示的实体集,例如基于权限。
hook_menuAccessController()
此自定义钩子将用于确定特殊路由是否对当前登录用户或由于特定原因可访问。
更改默认短语
所用的短语已在Drupal翻译系统中注册,可以使用Drupal管理后端提供的界面进行更改。要找到使用的翻译,请搜索
LIIP_DRUPAL_CRUD_ADMIN_MODULE
hook_getDestination()
提供例如表单成功提交时要重定向的路径。