作成されたエンティティのビューがブロックとして表示されています。同じページに新しいエンティティを作成できるフォームがあり、このフォームはAJAXを介して送信します。送信後にページを再読み込みしたくないためです。粗い問題は、送信すると、同じページのビューが更新されないため、送信によって何も実行されなかったように見えます。送信後にページをリロードするルールを設定できますが、リロードせずにビューを更新します。
私が試したもの(Drupal 7)
Views Auto-Refresh モジュールを試してみましたが、パフォーマンス上の理由から、フォームの送信時にのみこれをトリガーする方がよいため、ビューを常に更新することは少しやり過ぎに思われます。モジュール Views Flag Refresh は必要なことを正確に実行しますが、これはフラグであり、フォーム要素ではないため、フラグを使用してフォームのコンテンツを送信する方法がわかりません。次のモジュールは、フォームの送信後に必要なものを正確に実行し、ビューを更新しますが、D7ポートの計画がないD6バージョン( Ajax Views Refresh )しかありません。私が検討した最後の可能性はNode.js統合( Views Node.js )ですが、これはそのような小さな機能にとって非常に複雑に見え、これをうまくやる能力に自信がありません。
したがって、この時点では、どちらの方向に進むべきかはよくわかりません。フォームの送信後に更新するにはどうすればよいですか?
これはあなたが探しているモジュールかもしれません:- https://www.drupal.org/project/views_nodejs
私はいくつかの依存関係があり、node.jsサーバーをセットアップする必要がありますが、それ以外はかなり簡単です。
Ajaxコールバック関数をロードしたフックメニューを備えた単純なモジュールを作成できます。
YouTubeで便利なチュートリアルを見つけました: https://www.youtube.com/watch?v=zyLmQtiSXgI
ここにサンプルのソースコードがあります: https://github.com/seanbuscay/drupal-ajax-demo
独自のajaxを記述して(Drupal Behaviorメソッド)コールバックを使用して)、更新された値を特定のブロックに追加できます。
あなたのブロックで、タイトル、説明、画像(必要な場合)を表示してください。
そのため、ajaxコールバックを使用すると、データベースから送信データ(必要なものは何でも)を取得できます。次に、ページを更新せずに既存のブロックにこれらの値を追加できます。
これにより、開発作業が減り、ユーザーエクスペリエンスが向上します。