node_load((int) $nid)
は、完全に設定されたノードエンティティを読み込みます。 $node->title->value
はタイトルを取得しますが、Drupal 8のフィールド値にアクセスするにはどうすればよいですか?
_$entity
_を配列に変換する必要はないと思いますが、これは単純に機能します。
_$entity->get('field_name')->getValue();
_
参考:_devel_kint
_モジュールからkint()
を使用すると、オブジェクト要素へのアクセスに使用できるすべてのメソッドがわかるため、比較的var_dump()
はあまり役に立ちません。
drupal 8、$ nodeはクラスnodeの
$node->field_machine_name->getValue();
または
$node->get('field_machine_name')->getValue();
値の配列を返します。
1つだけを期待する場合は、配列を文字列化することもできます。
$node->field_machine_name->getString();
または
$node->get('field_machine_name')->getString();
フィールドの場合、たとえば_$node->body->value
_を使用できるはずです。フィールド名がわからない場合は、Drupal 8の Devel モジュールをインストールして、 dsm($node)
を介してノード。
いつでも$entity->toArray()
を実行して、エンティティの内容を確認できます。 (例えばphpstormで)xdebugを使用する場合でも、エンティティオブジェクト自体を理解するのは非常に困難です。私はdsm($node)
in Drupal 8は理にかなっています。ブラウザ内でのデバッグを主張する場合(そうすべきではない場合、Drupal 8は複雑すぎてxdebugなしではデバッグできません)dsm($node->toArray())
が必要です。
次のコードスニペットを使用してノードフィールド値を取得します
これは、URLからノードIDを取得するために使用されます
$nid = \Drupal::routeMatch()->getRawParameter($node_id);
Nidを使用してノードデータをロードするには
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
これはフィールド値を取得するために使用されます。
$terms = $node->get('field_Name')->getValue();
これはノードのタイトルを取得するために使用されます。
$product_name = $node->getTitle();
私にとって、$entity
(ノード)これは機能しました:
$entity->field_name->getValue();
8.1を使用します。
使用中(実際の正しい方法):
$node = \Drupal\node\Entity\Node::load($nid);
$node->get('nid')->value; // returns a raw value - Node ID
// Following both returns array structure containing value/target id nested value.
$node->get('nid')->value();
$node->nid->getValue();
それは単純です:
$node->get('field_name')->getValue();
フィールドがエンティティ参照フィールドである場合、参照されたエンティティを取得するいくつかの特別な方法があります。
ターゲットID(最初の要素)を取得するには:
$entity->get('field_entity_reference')->target_id;
ロードされたエンティティ(最初の要素)を取得するには:
$entity->get('field_entity_reference')->entity;
フィールドで->entity
を使用すると、読み込まれたエンティティが自動的に返されます。
フィールドに複数の参照を含めることができる場合は、次のようにそれらをすべてフェッチできます。
$entities = $entity->get('field_entity_reference')->referencedEntities();
エンティティの配列が返されます。
use Drupal\node\Entity\Node
$node = Node::load($nid);
$title = $node->get('title')->value;
または
use Drupal\node\Entity\Node
$title = Node::load($nid)->get('title')->value;
ここに、ノードオブジェクトからの値へのアクセスに関するニースの記事があります https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html