web-dev-qa-db-ja.com

Drupalで既存の送信済みWebフォーム送信をプログラムで更新するにはどうすればよいですか?

PHP in Drupalルールを使用して、送信されたWebフォーム送信の値を更新しようとしています。データに正しくアクセスして表示できます。新しいフィールドの値は、print $ submission-> data [61] [0]を使用した場合でも正しく表示されますが、送信結果ページに移動したときにフィールドが更新されていません。

Webform_submission_update()関数を使用して変更をプッシュしようとしましたが、まだうまくいきません。

質問: Drupalで既存の送信済みWebフォーム送信をプログラムで更新するにはどうすればよいですか?

コード:

$submission = webform_menu_submission_load($nid, $sid);

// Two ways I've tried to update the data
$submission->data[61][0] = "testwork";
$submission->data[61]['value'][0] = 'Declined';

// If I do print $submission->data[61][0]; it will show the new value.

webform_submission_update($nid, $submission);
2
sephiith

これを行う方法は次のとおりです。

_// Load the webform submissions file. The webform_get_submission() and
// webform_submission_update() functions are located here.
module_load_include('inc', 'webform', 'includes/webform.submissions');

// Load the node and submission.
$node = node_load(YOUR_NODE_ID);
$submission = webform_get_submission($node->nid, YOUR_SUBMISSION_ID);

// Change submission data.
//
// To see what's available, install Devel and run dpm($submission);
$submission->data[YOUR_FORM_ELEMENT_ID][0] = 'Update';

// Finally, update the submission.
webform_submission_update($node, $submission);
_

ドキュメンテーション:

5
Aram Boyajyan