検索の結果、EntityMetadataWrapper set()
関数を使用してエンティティフィールドを更新する多くの例を見つけ、モジュールに正常に実装しました。しかし、私はあなたが渡すことができるさまざまな配列オプションに関するドキュメント/ベストプラクティスの方法で多くを見つけることができませんでしたset()
。データを更新する方法によって、後で予期しない問題が発生しないことを確認したいと思います。
フォーム送信コールバックでテキストフィールド値を直接更新しています。
function hook_FORM_ID_submit(&$form, &$form_state) {
// Get the node.
$node = node_load($form_state['nid']);
// Create entity metadata wrapper to get and set values easily.
$node_wrapper = entity_metadata_wrapper('node', $node, array('bundle', $node->type));
// Set fields
$node_wrapper->field_quip->set(array("value" => $form_state['values']['field_quip']['value']));
$node_wrapper->field_short_sentence_summary->set(array("value" => $form_state['values']['field_short_sentence_summary']['value']));
// Save node.
$node_wrapper->save();
}
set()
キーを1つだけ持つ配列を渡しています:value
。これは正常に動作しているようです。ただし、value()
新しい値を設定する前に同じフィールドを呼び出すと、3つのキーを持つ配列が返されます。
$original_value = $node_wrapper->field_quip->value();
// Output of $original_value:
// Array (
// 'value' => '<p>The original value</p>',
// 'format' => 'general',
// 'safe_value' => '<p>The original safe value</p>',
// )
現在の設定フィールドの方法では、サニタイズされた値が失われます。これは私を噛むために戻ってきますか?私は実行しておく必要がありますcheck_markup()
値にして渡すformat
とsafe_value
するset()
というだけの配列よりも、value
?ここで髪の毛を分割しているかもしれませんが、正しいことを確実にしたいと思います。