web-dev-qa-db-ja.com

ノードオブジェクトの値にアクセスする方法

こんにちはpreprocess_views_view内のノードオブジェクトから値にアクセスできません。以下は私のオブジェクトのスクリーンショットです。強調表示されている値にアクセスしたいと思います。どうやってやるの? enter image description here

3
EXE

ノードIDを取得するには、$node->id()を使用できます。 ContentEntityBaseを拡張するオブジェクトはすべてこのメソッドを持っています。

Nodeクラスを見て、利用可能なパブリックゲッターメソッド(およびContentEntityBaseおよびEntity)を確認できます。

保護された値は、setterメソッドなしでは上書きできないことに注意してください。そのためには、プリプロセスフックから新しい変数を作成する必要があります。

1
Kevin

コンテンツエンティティオブジェクトのデバッグはあまり役に立ちません。代わりに、その配列表現($node->toArray())をデバッグして、次のようにそのデータにアクセスできます。

$node->get('field')->property。たとえば、$node->get('nid')->valueなどです。

IDのような基本フィールドには、通常、メソッドもあります。この場合、他の人が言及したように$node->id()です。

詳細は Entity APIチートシート を参照してください。

1
Berdir

いくつかのオプションがあります:

ノードIDのゲッターメソッドを使用できます(すべてのエンティティで使用可能)。

$node->id()

magic methodsを使用して、任意のコンテンツエンティティの任意のフィールドにアクセスできます。

$node->nid->value

上記のコードは実際には以下をトリガーします:

$node->get('nid')->get(0)->get('value')->getValue()
1
Eyal