我正在使用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
答案 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}}