1

Drupal 7 を使用していますが、Drupal でノード フォームを 2 回送信できないという問題が発生しています。シナリオ:

  • ノード フォームを表示し、Drupal の ajax フレームワークを使用して、use-ajax-submit 機能を介して送信を処理します。

  • 初めてフォームを送信すると、問題なく機能します。

  • フォームを 2 回目に送信すると、次のメッセージが表示されます。

    「このページのコンテンツは別のユーザーによって変更されているか、このフォームを使用して既に変更を送信しています。そのため、変更を保存できません。」

これは予期される動作であることを理解しており、それを回避する方法を見つけようとしています。Drupal 6 には、フォームの作成時に複数の送信を許可するフォーム属性があったことを覚えているようですが、Drupal 7 ではそれについて何も見つかりません。

誰かが共有しなければならないかもしれないアドバイスが大好きです。

4

3 に答える 3

1

私はこれを解決しました!node モジュールを見ると、変数node_validateの値に基づいて最後に送信された時間をチェックすることがわかりました。関数をバイパスし、ノードフォームが複数回送信できるようform_stateにする、フォーム用のカスタム検証ハンドラーを作成しました。node_validate

 /**
 * Sets up a node form so that it can be submitted more than once through an ajax interface
 * @param unknown_type $form
 * @param unknown_type $form_state
 */
function MYMODULE_allow_multisubmit (&$form, &$form_state){

  // set this as a custom submit handler within a form_alter function
  // set the changed value of the submission to be above the last updated time
  // to bypass checks in the node_validate
  $check = node_last_changed($form_state['values']['nid']);
  $form_state['values']['changed'] = $check + 120;

}
于 2012-05-16T02:10:24.297 に答える
0

hook_allow_multisubmit は drupal 7 には存在しません

于 2013-06-07T09:43:49.910 に答える