it-swarm-id.com

Bagaimana cara pengiriman formulir dengan pandangan / tugas sebenarnya bekerja?

Hai Saya punya pertanyaan tentang formulir Joomla. Saya ingin memahami bagaimana Joomla bekerja secara internal, terutama saya tertarik pada com_installer komponen untuk mengetahui cara kerjanya. Dan saya menemukan formulir di default.php file dalam com_installer/views/install/tmpl folder.

Dalam file ini ada tombol kustom untuk mengirimkan formulir. Dan saya tertarik pada bagaimana tombol-tombol itu sebenarnya memicu pemasangan komponen, modul atau hal lain itu sendiri. Dalam bentuk tubuh saya melihat beberapa nilai tersembunyi seperti

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

Jadi nilai tersembunyi ini mungkin memicu instalasi dengan memanggil penginstal instal dan menginstal metode pengontrol itu.

Tetapi pertanyaannya adalah bagaimana Joomla melakukan ini? Di mana kode mengarahkan ulang url dari view = install ke task = install.install? Dengan kata lain bagaimana Joomla tahu bahwa nilai dari input tersembunyi harus menuju ke url?

5
Bogdan

@ RiccardoZorn benar di level dasar. Ada dua bidang formulir tersembunyi yang biasanya ditetapkan: opsi dan tugas.

Opsi: Nama komponen seperti com_example Mengarahkan halaman untuk memuat komponen itu.

Tugas: Fungsi pengontrol atau pengontrol dan fungsi untuk memanggil. Jika memiliki '.' di dalamnya maka bagian sebelum yang menentukan controller untuk memuat dan kemudian memanggil fungsi dengan nama bagian setelah periode. Jika tidak ada periode, maka itu hanya akan menjalankan fungsi di controller default (biasanya controller.php di folder dasar komponen.


Anda juga secara khusus bertanya tentang tombol bilah alat. Ini melibatkan sedikit javascript yang secara otomatis dimuat oleh Joomla untuk menyalakan tombol.

Ketika tombol diklik, itu akan memicu Joomla.submitbutton(). Fungsi ini mengambil nilai yang merupakan tugas yang harus ditetapkan berdasarkan tombol yang diklik. Jadi jika Anda mengklik tombol simpan, ini biasanya akan menetapkan tugas ke import.save. (Saya tidak berpikir tombol itu benar-benar ada di komponen ini, tetapi banyak yang lain akan memilikinya.)

Fungsi submitbutton secara default hanya mendorongnya ke fungsi lain submitform. Fungsi ini kemudian akan memindahkan tugas itu ke bidang tersembunyi yang sesuai. Akhirnya ini menyerahkan formulir.

Jadi meskipun tombol-tombol toolbar itu tidak mengirimkan tombol (atau bahkan dalam bentuk tag biasanya) mereka masih akan memperbarui nilai tersembunyi task dan mengirimkan formulir menggunakan javascript.

Anda dapat menemukan fungsi javascript inti di sini: media/system/js/core-uncompressed.js

3
David Fritsch

Tugasnya adalah metode di controller.php di folder komponen utama (jika itu adalah satu kata), atau nama controller dan metodenya dipisahkan oleh sebuah titik, yaitu install.install Akan diuraikan oleh metode install() dalam controllers/install.php

2
Riccardo Zorn