欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Drupal7核心实体API介绍

shiping1 的头像

4 Drupal7核心实体API介绍

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

在Drupal7中,核心的实体系统,存放在includes下面的entity.inc文件中,这里面,包含一个DrupalEntityControllerInterface接口、DrupalDefaultEntityController类、EntityFieldQueryException类、EntityFieldQuery类、EntityMalformedException类。所有的实体,必须实现DrupalEntityControllerInterface接口,对于我们常见的大多数实体,只需要继承DrupalDefaultEntityController类即可,如果需要实现的实体不是存放在数据库中的,此时则需要单独的实现DrupalEntityControllerInterface接口。EntityFieldQueryEntity FieldSQL查询做了封装,当然,封装的不是很彻底,有很多的局限性,对于我们常见的查询,尤其涉及到字段的,用起来非常方便。我们在本章会对EntityFieldQuery做专门的介绍。

在commons.inc文件中,定义了一组与实体相关的API函数:

函数名

用途描述

entity_create_stub_entity

帮助函数,用来组装一个带有初始ids的对象结构。

entity_extract_ids

帮助函数,用来从一个实体中提取idvidbundle等信息。

entity_form_field_validate

把字段API验证附加到实体表单上。

entity_form_submit_build_entity

对于简单的实体表单,这个函数可以用来将表单提交的值复制到实体属性上面来。

entity_get_controller

获取某一实体类型的实体控制器类。

entity_get_info

获取某一实体类型的实体信息数组。

entity_info_cache_clear

重置有关实体类型的缓存信息。

entity_label

返回实体的标签。

entity_language

返回实体的语言。

entity_load

从数据库中加载实体。

entity_load_unchanged

从数据库中加载未被修改了的实体。

entity_prepare_view

用来触发钩子hook_entity_prepare_view()

entity_uri

返回实体的URI元素。

我们看到,Drupal7里面,与实体相关的API函数放在了commons.inc文件中,这是一个权宜之计。在Drupal8里面,这些相关的函数都被放到了entity.inc文件中去了。

Drupal核心,包含了与实体相关的钩子函数,这些钩子函数,允许我们在实体生命周期的各个不同阶段,与之交互。我们来看一下这些钩子函数。我们可以在system模块里面的system.api.php文件中,找到这些钩子函数。

钩子

描述

hook_entity_delete

实体删除时,用来交互的钩子。

hook_entity_info

这个钩子可以用来定义一个或者多个实体类型。

hook_entity_info_alter

用来修改hook_entity_info里面的定义信息。

hook_entity_insert

实体插入时,用来交互的钩子。

hook_entity_load

实体加载时,用来交互的钩子。

hook_entity_prepare_view

准备显示实体时,用来交互的钩子。

hook_entity_presave

在保存实体前,用来交互的钩子。

hook_entity_query_alter

用来修改或者执行一个EntityFieldQuery

hook_entity_update

实体更新时,用来交互的钩子。

hook_entity_view

在实体正在组装时,呈现(render)之前,用来交互的钩子。

hook_entity_view_alter

用来修改ENTITY_view()的结果。

hook_entity_view_mode_alter

用来修改正被显示的实体的查看模式。

 

 


普通分类: