web-dev-qa-db-ja.com

コンポーネントで行うように、モジュールからフォームを表示して保存する方法は?

jmodeladminクラスを使用して、Joomla MVCコンポーネントでフォームを表示および保存します。

しかし、モジュールから同じことをするにはどうすればよいですか?モジュールは対応するビュー、モデル、コントローラーを自動的に見つけるMVCの方法では機能しません。

だから私はこの投稿で述べられていることに従ってフォームを表示すると思いますモジュールからコンポーネントのフォームを取得する方法?が、関連するモジュールでフォームの送信ボタンがクリックされた場合、jmodeladmin classesを使用して送信をキャッチして保存するにはどうすればよいですか?

5
dev-m

コンポーネントを使用してモジュールからの出力をキャッチする必要があると思います。 JFormを使用してモジュールでフォームを出力し、次のような非表示の入力を持つことができます

<form action="index.php" method="POST" name="yourform">
<input type="hidden" value="com_yourcomponent" name="option"/>
<input type="hidden" value="yourview" name="view"/>
<input type="hidden" value="savesomething" name="task"/>
<!-- ...and other input-fields with your actual form input -->
</form>

次に、通常のメソッドをすべて使用してフォーム入力を処理できます...

4
jonasfh

フォームの送信はURLに移動する必要があるため、モジュールを使用した送信は少し難しいです。モジュールからの入力を受け入れるためだけにコンポーネントを作成しなければならないのは面倒です。

この問題があるため、Joomla 3ではMatt Thomasがcom_ajaxというコンポーネントを作成しました。 Com_Ajaxは、コンポーネントのように操作する特定のURLがなかった場合に、モジュールでモジュールを実行するのを支援するように設計されたコンポーネントです。

あなたのケースは、com_ajaxが対処するために設計されたものとまったく同じです。これを使用するためのドキュメントは次のとおりです。

http://docs.joomla.org/Using_Joomla_Ajax_Interface

モジュールで最終的に行うのは、送信URLを介して実行されるを作成することです。フォームの送信を支援するためにいくつかのJavaScriptを使用する必要があると思いますが、それが完全に必要かどうかはわかりません(ただし、よりセクシーです)。

次に、ヘルパーでモジュールのクラスを設定します。

https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module/blob/master/helper.php#L12

GetAjax()メソッドで設定します: https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module/blob/master/helper.php#L12

JFactory :: getApplication()-> input()を介してフォーム送信データのプルを処理するには

次に、何らかの応答を返します。おそらく、成功またはエラーメッセージであるJSON文字列のようなものです。

うまくいけば、これが役立ちます!

3
Chad Windnagle