Drupal 8 模块开发 3.1 : 配置表单和管理

原文地址: https://docs.acquia.com/articles/drupal-8-configuration-forms-and-cm   本课介绍”配置表单”和”配置管理(CM)”。 Drupal 8 把 Drupal 7 中的配置信息和函数收集起来用一个独立的系统管理。   本课… 学习 CM(配置管理)。 组装 examples/configform_example 模块。 学习配置表单。 探讨构建配置表单。 创建 *.settings.yml,介绍使用 CM 为模块存储配置。   配置管理 Drupal 8 配置管理(CM)由配置 API 驱动,为模块存储配置数据提供了一个核心位置。 这可以简化类似站点名称等静态数据或者字段定义、图片样式等复杂对象的配置。 这意味着 Drupal 8 核心有了 Drupal 7  Features 模块的功能。   Drupal 8 为不同安装环境(例如开发、分期和生产)的配置变化提供了倒入、导出的用户界面。 这样就可以分开配置不同的环境。   使用 Configuration inspector  模块,你可以在 Drupal 管理界面直接查看各个配置,而无须在文件系统内查看 YAML 文件。   模块开发者可以提交 […]

Continue Reading

Drupal 8 模块开发 2.3 : 实验室和其他信息

原文地址: https://docs.acquia.com/articles/drupal-8-blocks-configuration-and-forms-lab-and-other-information   总结 本课我们继续探讨了 Drupal 8 模块开发的两个新主题: 区块和表单。 已经知道怎么创建区块,也学习了通过实现 FormBase 类创建简单的表单。   Drupal 8 中的区块现在是可重用的插件。 类开始要定义名字空间。 文件能够包含核心或者其他资源的类。 注释中包含了注解,用于表征类的元数据。 完整步骤 切换到 Examples 模块 创建新的模块目录 block_example 切换到 block_example 目录 创建 block_example.info.yml 文件 粘贴例子代码到 block_example.info.yml 文件 创建 src/Plugin/Block 目录 切换到 src/Plugin/Block 创建 ExampleEmptyBlock.php 文件 粘贴例子代码到 ExampleEmptyBlock.php 文件 激活模块 清空缓存 去 /admin/structure/block 查看新定义的块 添加块到某个区域,查看显示效果 创建 ExampleConfigurableTextBlock.php 文件 粘贴例子代码到 […]

Continue Reading

Drupal 8 模块开发 2.2 : 创建表单

原文地址: https://docs.acquia.com/articles/creating-forms-drupal-8   Drupal 8 表单 现在我们已经能够创建从区块布局画面可重复使用的区块,是时候学习怎样利用 API 添加一个配置表单了。 这个新的配置表单允许你使用用户界面设置显示在区块内的一个文本字符串。   以下面的方式处理额外的配置表单元素: 使用 blockForm() 方法向接收的 $form 数组添加元素。 使用 blockSubmit() 方法保存从表单接收的数据。 使用 defaultConfiguration() 方法定义默认的配置值。 为表单创建个区块 首先,我们创建一个包含这个表单的区块: 创建文件 block_example/src/Plugin/Block/ExampleConfigurableTextBlock.php 粘贴以下代码 下载文件 <?php /**  * @file  * Contains \Drupal\block_example\Plugin\Block\ExampleConfigurableTextBlock.  */ namespace Drupal\block_example\Plugin\Block; use Drupal\Core\Block\Annotation\Block; use Drupal\Core\Block\BlockBase; use Drupal\Core\Annotation\Translation; use Drupal\Core\Form\FormStateInterface; /**  * Provides a ‘Example: configurable text string’ […]

Continue Reading

Drupal 8 模块开发 2.1 : 区块与配置

原文地址: https://docs.acquia.com/articles/drupal-8-blocks-configuration-and-forms   我们已经了解了构建模块的几个必要条件,接下来看下 Drupal 8 中最常用的组件:区块和表单。   Drupal 8 中的块 API 变了,现在块既是插件(plugins)也是实体(entities)。 Drupal 8 中的块由两部分 API 组成:  块插件 API :一个独立可重用的 API  块实体 API :处理块的位置和可见性控制   这意味着现在块是可字段化的实体和正在使用新的插件系统(change record here)。 也意味着我们可以创建新的绑定,追加字段,使用不同方式查看它们。   现在一个区块可以同时显示在多个区域(regions)内,这在 Drupal 8 之前是不可以的。 实质上现在是可以创建同一个块的多个实例了。 你也可以通过 UI 把一个块同时放在不同的区域,不会发生冲突。   本课我们将使用 Examples 项目的 block_example 模块。   本课… 创建 examples/block_example 模块 介绍 Drupal 8 中的注解 探讨如何使用 […]

Continue Reading

Drupal 8 模块开发 1.3 : 实验室和其他信息

原文地址: https://docs.acquia.com/articles/drupal-8-lesson-513-labs-and-other-information   总结 本节探讨了 Drupal 8 模块开发,学习了怎么使用新的 API 。 首先我们研究了一些基础知识:与 Drupal 7 对比讲解怎样开始一个 Drupal 8 模块(包括文件和目录结构)。 我们也看到了怎样定义路由,控制器,以及路由如何与控制器方法关联。 最后我们研究了怎样使用路由创建菜单。   下一课我们继续探讨 examples 模块,继续深入挖掘 Drupal 8 是如何工作的。   你现在应该理解: Drupal 8 实现了 OOP 编程。 Symfony 是一个框架,帮助 Drupal 解决了重复性问题。 你应该理解什么是 YAML 文件,怎么实现它。 modulename.info 已经被 modulename.info.yml 替代。 hook_menu() 系统被分解为 modulename.routing.yml 和 modulename.links.menu.yml 等文件。 菜单链接也通过 YAML 配置文件实现了。 类能够在 Controller.php […]

Continue Reading

Drupal 8 模块开发 1.2 : 菜单

原文地址: https://docs.acquia.com/articles/drupal-8-lesson-512-menus   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: path: ‘/examples/page_example/simple’ defaults: _controller: […]

Continue Reading

Drupal 8 模块开发 1.1 : Examples 模块,Symfony,控制器

原文地址: https://docs.acquia.com/articles/examples-module-symfony-controllers-and-menu   Drupal 8 模块开发为何如此不同? Drupal 8 实现自身的现代化改变是必要的,以便更有效的利用通用标准,以此保持与其它现代化框架的竞争力。 本课… 学习 Examples 捐赠项目,Symfony PHP 框架,控制器和路由。 构建 examples/page_example 模块。 探讨怎样为 page_example 模块创建 *.info.yml 文件,*.routing.yml,Controller.php 和 *.links.menu.yml 文件。 Drupal 8 和 Examples 模块 研究 Drupal 8 的模块开发时我们会用到 Examples 项目,主要利用其中的 page_example 模块。 确保下载 8.x 版本,解压备用。 Symfony 什么是 Symfony ? Symfony 是一个 PHP 框架,基于其最佳 WEB 开发实践,帮助开发者快速构建 PHP 应用。 Drupal […]

Continue Reading

Drupal 8 模块开发 : 目录(译)

初衷: Drupal 是世界上最好的 CMF。Drupal 8 更是一个新的里程碑,在 7 的基础上增加、改进特征 200 余处。 研究 Drupal 的过程中结识了很多朋友,也得到诸多 Drupaler 的帮助。 翻译本教程希望对 Drupal 8 在中国的推广尽一丝绵薄之力,也作为对社区的回报。   原文: https://docs.acquia.com/articles/building-drupal-8-modules 此教程由 Drupal 官方出品,目的在于降低 Drupal 8 的学习曲线。   本教程适合那些人? 已熟悉 Drupal 6、7, 想过渡到 Drupal 8 的开发者。 本教程会帮助他们向面向对象编程实践过渡,拥抱 Drupal 8。 有面向对象开发经验,想掌握 Drupal 8 的开发者,本教程将剖析模块开发。   目录: 课程1 : Examples 模块,Symfony,控制器和菜单 1.1 Examples 模块,Symfony,控制器 1.2 菜单 […]

Continue Reading