如何以编程方式获取Drupal 8中的内容类型名称

时间:2015-06-29 12:56:07

标签: content-type drupal-8

我正在使用Drupal 8.我希望得到内容类型的机器名称和标签。这是我的代码:

$cont_type = node_type_get_types();
foreach ($cont_type as $key => $value) {
  $label = $value->name;
  $machine_name = $key;
}

我收到一条错误消息:Cannot access protected property Drupal\node\Entity\NodeType::$name

5 个答案:

答案 0 :(得分:6)

要获取当前内容类型:

$node = \Drupal::routeMatch()->getParameter('node');
$typeName = $node->bundle();
$typeLabel = $node->getTitle();

还有另一种方法。

$node = \Drupal::request()->attributes->get('node')

答案 1 :(得分:4)

<?php
  use Drupal\node\Entity\NodeType;
?>

<?php
  $all_content_types = NodeType::loadMultiple();
  /** @var NodeType $content_type */
  foreach ($all_content_types as $machine_name => $content_type) {
    $label = $content_type->label();
  }
?>

答案 2 :(得分:0)

NodeType 类从实体类继承label()方法,使用该函数获取内容类型标签。请参阅Entity::label

$label = $value->label();

答案 3 :(得分:0)

请使用名称空间

use Drupal\node\Entity\Node;

答案 4 :(得分:0)

使用{{node.field_name.fieldDefinition.label}}