web-dev-qa-db-ja.com

ユーザーオブジェクトからフィールドコレクション値を取得する方法

ユーザーの「フィールドの管理」ページにフィールドコレクションを追加しました。フィールドマシン名は「houses」です。ユーザーは好きなだけ家を追加できます。

このフィールドコレクションは再グループ化します:

  • サンプルのテキストプレーンフィールド(家の名前)、マシン名「house_name」
  • サンプル整数フィールド(家のサイズ)、マシン名「house_size」

カスタムモジュールで、現在のユーザーを読み込んで、彼の家のすべての値(配列内)の値を取得したいのですが、どうすればよいですか?

私はこれを試しました:

$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
$user_houses = $user->get('field_houses')->getValue();
ksm($user_houses);

しかし私は得る:

enter image description here

「ユーザー編集」ページで8つの家を設定したので、8つのエントリの配列が表示されます。しかし、私はこのような配列ですべてのデータを取得したいと思います:

house 1 : name1 : size1
house 2 : name2 : size2
...
house 8 : name8 : size8

ありがとうございました :)

4
matthieu lopez

私は見つける=)

と:

use Drupal\field_collection\Entity\FieldCollectionItem;
...
$test = FieldCollectionItem::load(3);

たとえば、「3」は、$ user-> get( 'field_houses')-> getValue();によって返される値です。

4
matthieu lopez