フィールド管理ユーザーページに新しいフィールドを追加しました。これは、サンプルの複数値フィールドです。(複数の整数を入力できます)
管理者ユーザーのプロファイルを編集しました。このフィールドにいくつかの値を追加(および保存)しました。
42
66
23
77
カスタムモジュールで、現在のユーザーを読み込んで、整数の複数値フィールドのすべての値を表示します。
// Load the current user.
$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
// Get field data from that user.
$mycustomfield = $user->get('field_mycustomfield');
しかし、$ mycustomfield-> getValue()を出力すると、最初の値のみが取得されます。
// Display values
kint($mycustomfield->getValue()); // return only 42, but I want get 42, 66, 23, 77
カスタムフィールドのすべての値を取得するにはどうすればよいですか?
ありがとう:)
編集
私はこれを試します...
// Load the current user.
$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
// Set and save field data from that user.
$user->get('field_mycustomfield')->setValue(array(1,2,3,4,5));
$user->save();
// And display
$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
$user_mycustomfield = $user->get('field_mycustomfield')->getValue();
kint($user_mycustomfield); // print array(1.2.3.4.5) x)
新しいユーザーの場合、ユーザープロファイル編集ページからいくつかの値を設定すると、getValue()は最初の値のみを返します
しかし、APIを介して複数の値を設定すると、getValueですべての値を取得できます
それは本当に奇妙です。
1
キャッシングの問題だと思います。おそらく、表示されたユーザーではなく、別の場所にコードを配置します。その場合、自分で追加しない限り、ユーザーのキャッシュタグはありません。
—
4k4
私は1人のユーザー(管理者)しかいませんが、キャッシュの問題は正しいかもしれませんが、なぜ最初の値が得られるのかわかりません(キャッシュの問題=値なし?なぜ最初の値で次の値ではないのですか?)
—
matthieu lopez
それはどのフィールドタイプですか?値は編集フォームに再び表示されますか?$ user_mycustomfield [1]-> valueなどを試してください。
—
Berdir 2016
@ user2137454、私はキャッシュされたバージョンが1つの値を持っていると仮定しました。ほとんどの場合、同じコードで2つの結果がある場合、それはキャッシュされます。
—
4k4
Drupalでは、キャッシュが原因で幻想になっていないことを常に確認してください。フラッシュ、リロード、またはドラッシングしてください。しかし、結論に至る前にそれを取り除いてください。小枝でも、CSSでも、JSでも。
—
Vishal Kumar Sahu