web-dev-qa-db-ja.com

フォームの送信後にブロックまたはビューを更新/更新する方法は?

作成されたエンティティのビューがブロックとして表示されています。同じページに新しいエンティティを作成できるフォームがあり、このフォームはAJAXを介して送信します。送信後にページを再読み込みしたくないためです。粗い問題は、送信すると、同じページのビューが更新されないため、送信によって何も実行されなかったように見えます。送信後にページをリロードするルールを設定できますが、リロードせずにビューを更新します。

私が試したもの(Drupal 7)

Views Auto-Refresh モジュールを試してみましたが、パフォーマンス上の理由から、フォームの送信時にのみこれをトリガーする方がよいため、ビューを常に更新することは少しやり過ぎに思われます。モジュール Views Flag Refresh は必要なことを正確に実行しますが、これはフラグであり、フォーム要素ではないため、フラグを使用してフォームのコンテンツを送信する方法がわかりません。次のモジュールは、フォームの送信後に必要なものを正確に実行し、ビューを更新しますが、D7ポートの計画がないD6バージョン( Ajax Views Refresh )しかありません。私が検討した最後の可能性はNode.js統合( Views Node.js )ですが、これはそのような小さな機能にとって非常に複雑に見え、これをうまくやる能力に自信がありません。

したがって、この時点では、どちらの方向に進むべきかはよくわかりません。フォームの送信後に更新するにはどうすればよいですか?

3
FrontEnd

これはあなたが探しているモジュールかもしれません:- https://www.drupal.org/project/views_nodejs

私はいくつかの依存関係があり、node.jsサーバーをセットアップする必要がありますが、それ以外はかなり簡単です。

1
Jabelpeeps

Ajaxコールバック関数をロードしたフックメニューを備えた単純なモジュールを作成できます。

YouTubeで便利なチュートリアルを見つけました: https://www.youtube.com/watch?v=zyLmQtiSXgI

ここにサンプルのソースコードがあります: https://github.com/seanbuscay/drupal-ajax-demo

0
madoen

独自のajaxを記述して(Drupal Behaviorメソッド)コールバックを使用して)、更新された値を特定のブロックに追加できます。

あなたのブロックで、タイトル、説明、画像(必要な場合)を表示してください。

そのため、ajaxコールバックを使用すると、データベースから送信データ(必要なものは何でも)を取得できます。次に、ページを更新せずに既存のブロックにこれらの値を追加できます。

これにより、開発作業が減り、ユーザーエクスペリエンスが向上します。

0
Navane