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

蒲公英 提交于 周四, 08/17/2017 - 16:20
Drupal8模块开发

原文地址:
https://docs.acquia.com/articles/drupal-8-load-and-query-entities-lab  
 

总结

本课我们看到了在 Drupal 8 中如何查询和加载实体。Drupal 8 把 7 中的 EntityFieldQuery 类进行了大修,提供了查询内容实体和配置实体的健壮 API。我们只看了查询内容实体,但查询配置实体用法是相同的。  

我们也看到了怎样通过查询实体得到的 ID 加载实体的方法。接下来我们会看下 Drupal 8 中如何定义内容实体类型,要复习下这个在 Drupal 7 是怎么做的,请查看 Sitepoint articles。  

完整步骤:

  1. 在内容类型 Article 内追加 5 个节点(node),至少一个标题为”ipsum lorem“
  2. 拷贝课程 1 中的 page_example 模块,重命名为 query_example。
  3. 重命名相应的文件、术语、方法和类。
  4. 改变 PageExampleController 类
    a. 创建 simpleQuery() 方法,返回 ID 列表。
    b. 创建方法 basicQuery(),返回 simpleQuery() 产生的数组。
    c. 创建方法 intermediateQuery(),进行条件查询测试。
    d. 创建方法 conditionalStaticQuery(),返回 intermediateQuery() 产生的数组。
    e. 创建方法 advancedQuery(),进行 OR 条件测试。
    f. 创建方法 conditionalGroupQuery(),返回 advancedQuery() 方法数组。
    g. 编辑 YAML 路由文件,为上面 3 种查询追加响应路径。

你可以拷贝 QueryExampleController.php 代码,避免手动创建每个方法。  

额外练习

创建个页面,使用 entity.manager 和 entity.query 服务显示 simpleQuery() 返回的那些节点的 teaser。