6.3 实验室和其他信息
总结
本课我们看到了在 Drupal 8 中如何查询和加载实体。Drupal 8 把 7 中的 EntityFieldQuery
类进行了大修,提供了查询内容实体和配置实体的健壮 API。我们只看了查询内容实体,但查询配置实体用法是相同的。
我们也看到了怎样通过查询实体得到的 ID 加载实体的方法。接下来我们会看下 Drupal 8 中如何定义内容实体类型,要复习下这个在 Drupal 7 是怎么做的,请查看 Sitepoint articles。
完整步骤:
- 在内容类型 Article 内追加 5 个节点(node),至少一个标题为
”ipsum lorem“
- 拷贝课程 1 中的
page_example
模块,重命名为query_example。
- 重命名相应的文件、术语、方法和类。
- 改变
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。