web-dev-qa-db-ja.com

ビュー/タスクを含むフォーム送信は実際にどのように機能しますか?

こんにちは私はJoomlaフォームについて質問があります。 Joomlaが内部でどのように動作するかを理解したいのですが、特にcom_installerコンポーネントがどのように動作するかを知りたいと思っています。そして、default.phpフォルダのcom_installer/views/install/tmplファイルにフォームが見つかりました。

このファイルには、フォームを送信するためのカスタムボタンがあります。そして、ボタンが実際にコンポーネント、モジュール、またはその他のもの自体のインストールをトリガーする方法に興味があります。フォームの本文には、次のような非表示の値が表示されます

<input type="hidden" name="task" value="install.install" />

そのため、この非表示の値は、インストールコントローラーとそのコントローラーのインストールメソッドを呼び出すことにより、おそらくインストールをトリガーします。

しかし問題は、Joomlaがこれをどのように行うかです。 URLをview = installからtask = install.installにリダイレクトするコードはどこにありますか?つまり、非表示の入力からの値がURLに移動する必要があることをJoomlaがどのように認識するのですか?

5
Bogdan

@RiccardoZornは、基本レベルで正しいです。通常設定される2つの非表示フォームフィールドがあります:オプションとタスク。

オプション:_com_example_などのコンポーネント名は、そのコンポーネントをロードするようにページに指示します。

タスク:コントローラー関数、または呼び出すコントローラーと関数。 「。」がある場合その中の前の部分は、ロードするコントローラーを指定し、ピリオドの後の部分の名前で関数を呼び出します。ピリオドがない場合は、デフォルトのコントローラー(通常、コンポーネントのベースフォルダーにあるcontroller.php)で関数を実行します。


また、ツールバーボタンについても具体的に質問します。これには、ボタンに電力を供給するためにJoomlaによって自動的に読み込まれるjavascriptが少し含まれます。

ボタンをクリックすると、Joomla.submitbutton()がトリガーされます。この関数は、クリックされたボタンに基づいて設定するタスクである値を取ります。したがって、保存ボタンをクリックすると、通常はタスクが_import.save_に設定されます。 (ボタンがこのコンポーネントに実際に存在するとは思わないが、他の多くの人はそれを持っているだろう。)

submitbutton関数は、デフォルトでそれを別の関数submitformにプッシュするだけです。この関数は、そのタスクを適切な非表示フィールドにシフトします。最後に、フォームを送信します。

そのため、これらのツールバーボタンは送信ボタンではない(または通常はフォームタグでも)場合でも、taskの非表示の値を更新し、JavaScriptを使用してフォームを送信します。

コアとなるJavaScript関数は次の場所にあります:_media/system/js/core-uncompressed.js_

3
David Fritsch

タスクは、メインコンポーネントフォルダー内のcontroller.php内のメソッド(単一のWordの場合)、またはドットで区切られたコントローラーとそのメソッドの名前、つまり_install.install_はメソッドによって解析されますinstall() in _controllers/install.php_

2
Riccardo Zorn