drupal8模块开发

来源:网络收集 时间:2025-06-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Drupal 8模块开发

目录

第一章 Examples 模块,Symfony,控制器和菜单 ................................................................ 3

1.1 :Examples 模块,Symfony,控制器 ............................................................................. 3 1.2 :菜单................................................................................................................................ 5 1.3 :实验室和其他信息 ........................................................................................................ 9 第二章 区块,配置和表单 ..................................................................................................... 11

2.1 :区块与配置 .................................................................................................................. 11 2.2 :创建表单 ...................................................................................................................... 13 2.3 :实验室和其他信息 ...................................................................................................... 18 第三章 表单配置和管理 ......................................................................................................... 19

3.1 :配置表单和管理 .......................................................................................................... 19 3.2 :配置和 Config 对象 ................................................................................................... 22 3.3 :实验室和其他信息 ...................................................................................................... 26 第四章 实体,内容实体和配置实体 ..................................................................................... 27

4.1 :实体,内容实体和配置实体 ...................................................................................... 27 4.2 :实验室和其他信息 ...................................................................................................... 29 第五章 实体字段 ..................................................................................................................... 30

5.1 :实体字段 ...................................................................................................................... 30 5.2 :导出配置 ...................................................................................................................... 32 5.3 :实验室和其他信息 ...................................................................................................... 34 第六章 实体查询和实体加载 ................................................................................................. 35

6.1 :实体查询和加载 .......................................................................................................... 35 6.2 :加载实体 ...................................................................................................................... 38 6.3 :实验室和其他信息 ...................................................................................................... 42 第七章 加载和编辑字段 ......................................................................................................... 43

7.1 :加载和编辑字段 .......................................................................................................... 43 7.2 :加载字段的例子 .......................................................................................................... 45 第八章 服务,依赖注入和服务容器 ..................................................................................... 49

8.1 :服务.............................................................................................................................. 49 8.2 :服务和控制器 .............................................................................................................. 51 8.3 :依赖注入 ...................................................................................................................... 54 8.4 :概要.............................................................................................................................. 57 第九章 创建元素,主题化元素和管理前端库 ..................................................................... 58

9.1 :创建元素,主题化元素和管理前端库 ...................................................................... 58 9.2 : Twig ............................................................................................................................ 63 9.3 :向组件添加 Javascript/CSS/库 ................................................................................... 65 9.4 :高级渲染数组模式 ...................................................................................................... 69 9.5 :模式概述 ...................................................................................................................... 72 9.6 :实验室.......................................................................................................................... 73

1

Drupal 8模块开发

第十章 单体和功能测试 ......................................................................................................... 74

10.1 :单体和功能测试 ........................................................................................................ 74 10.2 :单体测试 .................................................................................................................... 76 10.3 :功能测试 .................................................................................................................... 80 10.4 : PHPUnit Doubles / Mocks / Stubs ............................................................................ 85 第十一章依赖注入回顾 ................................................................................................................. 87

11.1 :依赖注入回顾 ............................................................................................................ 87 11.2 :依赖注入和服务 ........................................................................................................ 89 11.3 :依赖注入和控制器 .................................................................................................... 91 11.4 :依赖注入和插件 ........................................................................................................ 93 11.5 : PhpStorm 策略........................................................................................................ 96

2

Drupal 8模块开发

第一章 Examples 模块,Symfony,控制器

和菜单

1.1:Examples 模块,Symfony,控制器

Drupal 8 和 Examples 模块

在探索 Drupal 8 的各种模块开发能力时我们会用到Examples项目,主要利用其中的 page_example 模块。

确保下载 8.x 版本,解压备用。

Symfony

什么是 Symfony ?

Symfony 是一个 PHP 框架,基于其最佳 WEB 开发实践,帮助快速开发 PHP 应用。

Drupal 借助 Symfony 的代码构建路由和控制器,当然这些代码并不是专门为 Drupal 开发, 而是按照通用标准实现的。

代替 Drupal 7 的过程式编程 Drupal 8 实现了面向对象架构,更具灵活性。 Drupal 8 的灵活性增强,部分得益于把 Symfony 框架作为其核心的一部分。 Symfony 有几十个独立的库,这些库可以应用于任何 PHP 项目。 注意:

Drupal 8 并未使用 MVC 架构模式,它只实现了控制器编程模型。

为什么使用 Symfony ?

Symfony 引入的一个最有用的工具是能够根据位置自动加载代码。

现在 Drupal 开发者无需再创建一个完整的 include 文件,只一个 use 行便可包含可重用代码。

Drupal 是一个 PHP 应用,Symfony 是有可用库的 PHP 框架,在 Drupal 核心内使用 Symfony 既有益处也有风险。

框架的改变可能会增加有经验创造者的数量,尤其是那些 PHP 开发者,他们可以很容易的过渡到 Drupal ,为此积极学习、利用这个项目。但对于 Drupal 社区内精通 Drupal 而对现代化的 PHP 技术欠缺的这些人可能会形成门槛。

理想情况下,通过创建有用的学习工具和彼此分享培训信息会解决这些风险,为之前社区内的 Drupal 开发者降低门槛。

什么是控制器?

对于习惯了之前 Drupal 7 那种过程式开发(虽然部分内容使用了 OOP 方法)的人来说,控制器这个概念可能略有挑战性。

一个控制器就是一个 PHP 函数,用于处理 HTTP 请求(HTTP request),构造并返回一个 HTTP 响应

(HTTP response,比如 Symfony Responseobject)。响应可以是一个 HTML 页面,一个 XML

3

Drupal 8模块开发

文档,

一个序列化的 JSON 数组,一个图片,一个重定向,一个 404 错误或者任何你能想到的东西。

控制器可以包含呈现页面内容的任何逻辑。

控制器等价于 Drupal 7 中hook_menu() 内的页面回调函数。你创建一个控制器类,

定义一个方法显示页面数据。同样的,在 Drupal 7 中你会创建一个被 hook_menu() 中的 \引用的函数,显示这个页面数据。

什么是路由,路由器?

Symfony 路由器允许你定义创造性地 URL,映射到应用的不同区域。一个路由是从一个 URL 路径到一个控制器的映射。

怎样创建第一个 Drupal 8 模块?

作为起点,我们基于 Examples 创建一个简单模块,现在大多数模块结构基于YAML。 YAML 是一个人类友好的数据序列化标准,可以由任何编程语言实现。

创建目录

创建 page_example.info.yml 文件 创建 page_example.routing.yml 文件 创建 PageExampleController.php 文件 创建 page_example.links.menu.yml 文件 重构缓存 测试

设置目录

首先我们必须创建文件和目录结构,使 Drupal 8 意识到这个模块。

Drupal 7 最少需要有.info和.module文件。Drupal 8 需要的更少,只需要有 YAML 版本的 .info 文件,叫做.info.yml,它里面包含 Drupal 8 能够识别的数据结构。

一个主要的变化是自定义和捐献模块被放在了 Drupal 根下(modules/[directory])。 所有核心代码被移到了一个单独(core/)的目录里。

在模块(modules/)目录,还是像 Drupal 7 那样被推荐把自定义和捐献模块分开放置。

在 Drupal 8 的文档根目录,完成以下几步:

导航到/modules目录 创建目录examples 进入这个新目录

cd examples

创建目录page_example,这个将对应 Examples 项目,模块名叫 page_example。 进入新目录

cd page_examples

本课我们不会安装实际的 Examples 模块,而是使用它的代码片断创建一个简单的“Hello world”模块,目的在于向大家一步步地展示构建模块的过程。

4

Drupal 8模块开发

创建 info.yml 文件

现在你已经在正确的目录位置,是时候创建 .info 文件了。

创建page_example.info.yml 文件内增加以下代码

name: 'Page example' type: module

description: 'An example module showing how to define a page to be displayed at a given URL.' package: 'Example modules' core: 8.x

type 是需要的新属性,可以设置为 module 或 theme (主题也需要*.info.yml文件)。 如果你对 Drupal 7 熟悉,你应该知道其他属性的含义。

你可以查看Drupal 8 documentation page 了解更多可以在 .info.yml 使用的 key|value,以及相关的变更记录。

现在去 Drupal 站点的 Extend 页面,激活“Page example”模块。

在激活模块之前不需要创建 .module 文件,我们希望最终的*.module文件尽可能的小,功能性代码应该尽可能的放置在 service、控制器和插件等面向对象结构内。

创建 routing.yml

现在我们将为新模块创建菜单。

1.2 :菜单

hook_menu() 和它的回调函数发生了什么?

Drupal 8 里,hook_menu() 系统被拆分为几个 YAML 文件:

YAML 文件

modulename.routing.yml

描述

包含 URL 路径和回调函数的映射关系。

modulename.links.menu.yml 包含菜单项的结构。

modulename.links.action.yml 等效 Drupal 7 的常量 MENU_LOCAL_ACTION 。 modulename.links.task.yml

等效 Drupal 7 MENU_DEFAULT_LOCAL_TASK 。

Drupal 8 中我们使用Symfony2 components 处理路径到控制器方法的路由,进行数据显示。

在同一个目录((page_example),创建 page_example.routing.yml 文件。 添加以下代码

page_example_description:

path: '/examples/page_example' defaults:

_controller: '\\Drupal\\page_example\\Controller\\PageExampleController::description' requirements:

_access: 'TRUE'

page_example_simple:

5

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库drupal8模块开发在线全文阅读。

drupal8模块开发.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/459228.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219