私はブロックモジュールで作業しており、ファイルがmanaged_fileフィールドを介してアップロードされたときに構成フォームでajax操作を実行したいと考えています。ajaxコールバック関数内でフォーム状態にアクセスする方法
したがって、managed_file隠しフィールドが変更されると(ファイルが正常にアップロードされると)、ajaxコールバックが発生します。 (/ block_video/update_video)の上に登録されたDrupalのパスは、私が現在の状態(初期ではない)とのブロック構成の$ form_state変数を取得したい関数を呼び出し
function updateVideo($action){
(function ($) {
$.ajax({
url: '/block_video/update_video', // drupal menu path
dataType: 'json',
type: 'POST',
data: { 'action' : $action },
success: function(data){
// @ TODO
}
});
})(jQuery);
}
:AJAXは、このように呼ばれています。現在のブロック設定フォームの状態をJavaScriptを直接使用することなくページを更新することなく表示することは可能ですか?
私はmanaged_fileで '#ajax'プロパティを使うのが簡単ですが、それはありません。そこで、上記のajaxコールバックをmanaged_fileの隠し要素の値の変更を待つことで追加しました。この部分はここではhttp://forum.jquery.com/topic/adding-a-change-event-on-a-hidden-fieldのメソッドを使用して動作しています。
カスタムajaxコールバックで$ form_stateを取得できるはずです。 FAPI [#ajax] [callback](両方とも$ form & $ form_stateがコールバックパラメータに渡されます - 私はコールバックに渡された現在の$ form_stateしか必要ではありません)私はそれがDrupalによってどのように行われたのか理解できませんでした。
たぶん誰かが...偶然
おかげで私を助けることができます。その隠しフィールドの状態変化が、私は現在のフォームの状態を取得する際に、直接、 私は#ajaxコールバックの外側form_statesを取得するための任意の解決策を見つけることができませんでした: