2016-06-22 1 views
0

Drupalにはこのajaxフレームワークが組み込まれています。だから、私はその後、最終的にDOMをmanupulateするために、いくつかの方法で、DrupalのAjaxフレームワークによって処理されますDrupalファイルモジュール内のDOMで何が起こったのですかajax upload

$commands = array(); 
$commands[] = ajax_command_replace(NULL, theme('status_messages')); 
return array('#type' => 'ajax', '#commands' => $commands); 

出力のようにコマンドを使用して、コールバック関数を書くことができます。上記の関数_replaceは、いくつかのラッパーIDに基づいてDOM内の何かを置き換えます。

上記のコードは、Drupalに同梱されているfileモジュールのものです。新しいファイルをアップロードすると、フォームが更新され、フォームに新しいファイルが挿入されたことを示します。

ドキュメントによると、最初の引数はNULLとなり、selectorとなります。私は特に、このfileモジュールが最終的な結果としてDOM要素を挿入できるようにラッパーIDをどのように計算するのか知ることに興味があります。

答えて

0

drupalのドキュメントページから取得しました。

コマンドが#ajaxフォーム要素からの要求に対する応答である場合、この値はNULLにすることができます。

file_managed_file_process関数には、upload_buttonフォーム要素があり、これはajax要求を 'file/ajax/...'パスに送信します。

ajax_command_replaceは、file_ajax_upload()のajaxコールバックで使用されます。したがって、リクエストはupload_buttonフォーム要素からのものです。この場合、セレクタの代わりにNULLを使用できます。

+0

Drupalは「セレクタ」として何を置き換えるべきかを知っていますか?トリガーボタン要素のラッパー要素?ファイルフィールド全体が置き換えられたように見えます。それは全体の子フォームですか? – Hao

+0

$ ajax_settings ['wrapper']で指定されたラッパーを置き換える必要があります – Zolyboy

関連する問題