web-dev-qa-db-ja.com

EntityMetadataWrapperException:無効なデータ値が指定されました。必要なデータ型と形式に一致していることを確認してください。 EntityMetadataWrapper-> set()

プログラムでノードを作成しています。私は次のコードを書きました、

$e = entity_create('node', array('type' => 'some_node'));
// Specify the author.
$e->uid = 1;
// Create a Entity Wrapper of that new Entity.
$entity = entity_metadata_wrapper('node', $e);

// Specify the title.
$entity->title = 'Some Title';
$entity->body = 'abc';
$entity->save();

ボディに値を与えると、次のエラーが発生します。コメント本文うまくいきます

EntityMetadataWrapperException:無効なデータ値が指定されました。必要なデータ型と形式に一致していることを確認してください。 EntityMetadataWrapper-> set()

このエラーの原因と修正方法を教えてください。

3
Ali Nouman

本文はフィールドAPIフィールドであり、ネイティブのPHP変数ではないため、そのように値を割り当てることはできません。代わりに、次のキーを使用して配列を渡す必要があります。

$entity->body->set(array(
  'value' => 'This is the body',
  'summary' => 'This is the summary',
  'format' => 'full_html',
));

特定の言語の値を設定する場合は、設定する前に呼び出します。

$entity->language(LANGUAGE_NONE); // or 'en' or whatever

ラッパーの詳細: https://drupal.org/node/1021556

9
Wtower

以下のコードを使用してみてください

$entity->body->set(array('value' => "abc"));
2
Anil Sagar