回答:
私はあなたが$entity
配列に変換する必要はないと思います、これは単に機能するでしょう。
$entity->get('field_name')->getValue();
FYI:使用kint()
からdevel_kint
モジュールは、あなたがオブジェクトの要素にアクセスするために使用することができ、すべての利用可能な方法をお知らせしますので、比較的var_dump()
少ない便利です。
getValue()
私のために動作します(8.1.xと8.2.xの両方で)APIリファレンスを参照してください
->getValue()
は汎用的であり、フィールドタイプに関係なく機能します。を使用する->value
場合、フィールド値がvalue
プロパティに保存されている場合にのみ機能します。より複雑なタイプ(日付やエンティティ参照など)では機能しません。
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)
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();
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から値にアクセスする方法について説明します。
それは単純です:
$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();
これにより、エンティティの配列が得られます。