私は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
現在のコンテンツタイプを取得するには:
$node = \Drupal::routeMatch()->getParameter('node');
$typeName = $node->bundle();
$typeLabel = $node->getTitle();
別の方法があります。
$node = \Drupal::request()->attributes->get('node')
<?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();
}
?>
名前空間を使用してください
use Drupal\node\Entity\Node;
NodeTypeクラスはEntityクラスからlabel()
メソッドを継承し、その関数を使用してコンテンツタイプを取得しますラベル。 Entity :: label を参照してください。
$label = $value->label();
{{node.field_name.fieldDefinition.label}}を使用します