こんにちはpreprocess_views_view内のノードオブジェクトから値にアクセスできません。以下は私のオブジェクトのスクリーンショットです。強調表示されている値にアクセスしたいと思います。どうやってやるの?
ノードIDを取得するには、$node->id()
を使用できます。 ContentEntityBaseを拡張するオブジェクトはすべてこのメソッドを持っています。
Nodeクラスを見て、利用可能なパブリックゲッターメソッド(およびContentEntityBaseおよびEntity)を確認できます。
保護された値は、setterメソッドなしでは上書きできないことに注意してください。そのためには、プリプロセスフックから新しい変数を作成する必要があります。
コンテンツエンティティオブジェクトのデバッグはあまり役に立ちません。代わりに、その配列表現($node->toArray()
)をデバッグして、次のようにそのデータにアクセスできます。
$node->get('field')->property
。たとえば、$node->get('nid')->value
などです。
IDのような基本フィールドには、通常、メソッドもあります。この場合、他の人が言及したように$node->id()
です。
詳細は Entity APIチートシート を参照してください。
いくつかのオプションがあります:
ノードIDのゲッターメソッドを使用できます(すべてのエンティティで使用可能)。
$node->id()
magic methodsを使用して、任意のコンテンツエンティティの任意のフィールドにアクセスできます。
$node->nid->value
上記のコードは実際には以下をトリガーします:
$node->get('nid')->get(0)->get('value')->getValue()