首页 > 解决方案 > Drupal 8 从数据库中获取数据

问题描述

我的任务是在 drupal 的管理面板中制作一些电影内容

https://imgur.com/a/5eJp9ZQ

然后使用自定义模块和控制器将这些电影显示到我的自定义树枝上。我无法找到解决方案或提示如何做到这一点,也许我什至确实找到了一些东西,但由于我对 drupal 的了解很少,我不知道我必须做什么才能实现这一目标。我在遵循 drupal 文档的 hello world 部分的同时创建了一个自定义模块、控制器、路由和所有内容,但在那之后我只是僵住了,我无法继续

有人可以帮助我完成这项任务,将不胜感激,因为我已经坚持了 2 天了

标签: drupaldrupal-8drupal-modules

解决方案


Drupal 获取内容的方式是使用视图。您应该创建一个视图(Structure -> Views -> Add view从管理菜单)来获取该数据。它类似于用于创建数据库查询的可视化界面,乍一看并不难。

然后,很少有方法可以使用该视图。

  1. View 可以创建一个页面,也可以创建一个块,所以页面上会出现内容
  2. 您可以从控制器执行视图并收集返回的数据视图并将其传递给树枝模板以呈现数据。
  3. 您可以直接从 twig 嵌入视图,因此无需在页面控制器内进行任何类型的编码。

带有“页面视图”的选项 1(它的显示类型是“页面”)可能是最简单的一个,但不满足自定义控制器的请求。

使用选项 2,您可以使用: views_get_view_result() 调用以获取结果:

https://api.drupal.org/api/drupal/core%21modules%21views%21views.module/function/views_get_view_result/8.2.x

它应该看起来像:

$view = Views::getView('view_machine_name');
$view->execute();
foreach ($view->result as $row) { // iterating trough rows of results
  // Do something with $row
}

此选项最符合您的要求。

对于选项 3,您必须使用 Twig Tweak 模块从树枝嵌入视图:

https://www.drupal.org/docs/8/modules/twig-tweak/twig-tweak-and-views

除此之外,您当然可以创建自定义数据库查询,但这不是那么“drupalish”的方式,查询可能非常复杂,因为 drupal 的数据库结构不是最简单的,您可能会迷路。


推荐阅读