web-dev-qa-db-ja.com

複数の値を持つノードのリストフィールドの値を設定する

フォームプラグインからカスタムコンテンツタイプのノードをプログラムで生成しようとしています。ほとんどの分野で何の問題もありません。たとえば、titleフィールドの場合、値を次のように設定できます。

$node->title->value = t('My title');
$node->save();

ただし、複数の値を許可するlist(text)フィールドもあります。また、フィールドの値を複数の値で保存する方法がわかりません。前の例でタイトルを設定したのと同じようにできる値が1つしか許可されていないと仮定しているのですが、フィールドが配列である場合にどのように処理すればよいですか?テストとして、フィールドに既に値が含まれているノードでフィールドのdieステートメントを実行して、フィールドの外観を調べ、これが生成されました。

Array ( [0] => Array ( [value] => test_3 ) [1] => Array ( [value] => test_4 ) ) 1

しかし、どうすればいいのかわかりません。複数の値が許可されているリストフィールドのフィールド値をどのように設定しますか?

2
Matt

配列を割り当てることで、フィールドの完全な内容を置き換えることができます。

$node->field_multivalue = [
  ['value' => '1'],
  ['value' => '2'],
  ['value' => '3'],
];

フィールドに別の値を追加する場合は、php配列のようにフィールドを使用できます。

$node->field_multivalue[] = ['value' => '4'];

フィールドのメインプロパティは省略できます。

$node->field_multivalue[] = '5';

これで、フィールドに5つの値があります。

8
4k4