Drupal 8 模块开发

Drupal 8 模块开发 9.4 : 高级渲染数组模式

蒲公英 提交于 周四, 08/17/2017 - 17:06

原文地址:
https://docs.acquia.com/articles/drupal-8-advanced-render-array-patterns

HTML 属性

你能通过渲染数组设置 HTML 属性(例如 ID 和 Class)。这些属性会被传递到 Twig 模板,也允许 themer 添加和覆盖这些值。
为了做这个,向渲染数组添加 #attributes 变量。数组的键是属性,值是属性的值。

Drupal 8 模块开发 9.2 : Twig

蒲公英 提交于 周四, 08/17/2017 - 16:55

原文地址:
https://docs.acquia.com/articles/drupal-8-twig

增加一个 Twig 模板

我们已经定义了基本的主题元素,现在可以创建一个 Twig 模板了。
Twig 是 Drupal 8 的默认主题系统。 默认 Twig 模板文件的命名规则与 Drupal 7 中的 .tpl.php 模板文件相同: 使用 - 代替 _,以 .html.twig 为扩展名。  

我们的 Twig 模板
首先,看下模板文件 templates/my-element.html.twig,你可以使用 {{element}} 打印整个渲染元素或者使用代码 {{element.field}} 打印个别字段或孩子元素。

Drupal 8 模块开发 8.4 : 概要

蒲公英 提交于 周四, 08/17/2017 - 16:48

原文地址:
https://docs.acquia.com/articles/drupal-8-dependency-injection-summary  
 

总结

服务容器的力量在于允许我们书写解耦合的功能,并把这些功能传递给需要它的地方。当注册服务时你也可以声明依赖。这意味着当 Drupal 实例化一个服务对象时,它也会实例化它的依赖,并传递给它的构造器。
想了解更多可以查看 documentation for Services and dependency injection 。  

我们回顾下服务,他们是什么以及他们是怎样工作的 ----- 他们是维护可重用、解耦合功能片断的一种伟大方式。
我们也引入了依赖注入这个概念 ----- 等价向函数(构造函数或者 setter 方法)传递参数。  

Drupal 8 模块开发 8.3 : 依赖注入

蒲公英 提交于 周四, 08/17/2017 - 16:44

原文地址:
https://docs.acquia.com/articles/drupal-8-dependency-injection

Drupal 8 使用 Symfony 的依赖注入容器管理服务实例以及把这些服务注入到需要他们的类内。依赖注入可以解耦功能和改善可测试性。仅出于这两个原因就有必要了解清楚依赖注入是什么及怎样使用它。  

上节我们已经创建和使用了一个服务,现在你可能想更深入的理解依赖注入和服务定义。  

服务定义

Symfony 文档的 Service Container 部分定义了服务(Services)

Drupal 8 模块开发 8.2 : 服务和控制器

蒲公英 提交于 周四, 08/17/2017 - 16:41

原文地址:
https://docs.acquia.com/articles/drupal-8-services-and-controllers  
 

创建个控制器

我们已经创建了控制器,现在把服务追加进去。当 simple_example() 函数被调用时它会返回一个渲染数组。扩展基类总是个好办法。本例中我们的控制器扩展 ControllerBase 类。我们很快就会看到,这使我们能够访问服务。

下载文件

Drupal 8 模块开发 7.2 : 加载字段的例子

蒲公英 提交于 周四, 08/17/2017 - 16:34

原文地址:
https://docs.acquia.com/articles/drupal-8-loading-fields-examples  
 

例子模块

我们将创建一个例子模块,加载一个节点(node),输出它的一些信息。首先,至少创建一个节点,body 字段填写一些内容。然后,我们创建这个模块,加载单一节点。  

创建文件 field_example.info.yml :

name: Field Example
type: module
description: Example showing how to use fields
core: 8.x
package: Examples

创建文件 field_example.routing.yml :