2つの異なるブロックがあります。 1つはフォームを持ち、もう1つは上記のフォームからアップロードされたいくつかのファイルを含むビューです。
フォームの送信時に、ビューの結果を更新する必要があります。 jsを使用してそれを行うことができると思ったが、それを動作させることはできません。
コードを確認してください。どんなアドバイスも参考になります!
Drupal.behaviors.myViewsRefresh = {
attach: function( context , settings) {
var viewName = 'application_documents';
// Your views should be Ajax enabled
var instances = Drupal.views.instances;
var myViews;
// then simply need to iterate through the various
// views instances name to find the view
$.each( instances , function getInstance( index, element){
if(element.settings.view_name == viewName ){
myViews = '.view-dom-id-' + element.settings.view_dom_id;
}
});
$(document).once('mysubmitbutton').ajaxComplete(function(event, xhr, settings){
if(typeof myViews !== 'undefined'){
$(myViews).trigger('RefreshView');
}
});
}
}
AjaxCompleteに入ることができますが、ビューは再読み込みされません。ビューIDは正しいです。
前もって感謝します。
myViews
変数を作成する方法が、これが機能しない理由のようです。
私のために働いたことはこれを変えていました:
myViews = '.view-dom-id-' + element.settings.view_dom_id;
に
myViews = '.js-view-dom-id-' + element.settings.view_dom_id;
フォームを送信せずに、単純なバージョンを試してみました。ブラウザのコンソールからこれを呼び出すだけです。
jQuery('.js-view-dom-id-c58e9660da223aaf7c1645b2746e0b2e16f6a2f3e1de74c8533e6ad6117613db').trigger('RefreshView')
そしてそれは期待通りに機能しました。最後のコメントとして、および提供したコードでコメントされているように、ビューはAjax対応でなければなりません。そうでない場合、これは機能しません。
幸運を!
PS:コードベースからの最も関連性の高い情報(このコメントはそれをすべて述べています):
// Add a trigger to update this view specifically. In order to trigger a
// refresh use the following code.
//
// @code
// $('.view-name').trigger('RefreshView');
// @endcode
( http://cgit.drupalcode.org/drupal/tree/core/modules/views/js/ajax_view.es6.js#n94 )