web-dev-qa-db-ja.com

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

8
Rahul Seth

現在のコンテンツタイプを取得するには:

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

別の方法があります。

$node = \Drupal::request()->attributes->get('node')
8
Jose D Jo
<?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();
  }
?>
4
ebeyrent

名前空間を使用してください

use Drupal\node\Entity\Node;
0

NodeTypeクラスはEntityクラスからlabel()メソッドを継承し、その関数を使用してコンテンツタイプを取得しますラベル。 Entity :: label を参照してください。

$label = $value->label();
0
baikho

{{node.field_name.fieldDefinition.label}}を使用します

0