Membuat modul sederhana/Menggunakan Database
From Joomla! Documentation
< J3.x:Creating a simple module
Ini adalah seri artikel mengenai cara membuat modul untuk Joomla! Versi . Anda dapat menelusuri artikel-artikel yang terdapat di dalam seri ini melalui menu dropdown.
Mulai dari Pendahuluan, lalu telusuri artikel-artikel di dalam seri ini melalui tombol navigasi di bagian bawah atau dari kotak di samping (Artikel dalam seri ini)
Banyak modul-modul di Joomla yang membutuhkan pemakaian database. Di tutorial ini, diasumsikan bahwa anda telah mengerti dasar cara pemakaian kelas JDatabase. Kalau belum, silakan baca dokumentasi cara mengakses database dengan JDatabase sebelum melanjutkan tutorial.
Membuat tabel pada pemasangan
Untuk membuat tabel xml pada pemasangan, kita perlu menambahkan baris berikut ini ke mod_helloworld.xml:
<install>
<sql>
<file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
<file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file>
</sql>
</install>
<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file>
<file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file>
</sql>
</uninstall>
<update>
<schemas>
<schemapath type="mysql">sql/mysql/updates</schemapath>
<schemapath type="sqlazure">sql/sqlazure/updates</schemapath>
</schemas>
</update>
Ada 3 bagian untuk kode ini:
- Tag install untuk menambahkan tabel database.
- Tag uninstall untuk menghapus tabel database tersebut kalau modulnya dilepas. Sebagai catatan, tidak semua modul akan membutuhkan fitur ini (dan ini tidak diwajibkan).
- Tag update akan mengupdate database jika suatu database perlu perubahan pada saat memperbarui modul tersebut.
Berikutnya, anda harus tentukan tag folder di bagian files guna memastikan file sql telah disalin dari paket zip instalasi anda:
<folder>sql</folder>
Mohon dicatat bahwa di sini kita menerapkan dua skema, MySQL dan Microsoft SQL - sekali lagi, anda bisa memilih salah satu atau kedua sistem ini sesuai kebutuhan.
Dalam contoh ini, kami hanya akan menunjukkan contoh database MySQL. Membuat Microsoft SQL Server akan diabaikan sebagai latihan bagi para pembaca.
Di dalam file install.mysql.utf8.sql, kita akan membuat tabel dan menuliskan hello.
CREATE TABLE IF NOT EXISTS `#__helloworld` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`hello` text NOT NULL,
`lang` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hello World', 'en-GB');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr-FR');
Di file pelepasannya, kita hanya perlu menghapus tabel tersebut.
DROP TABLE IF EXISTS `#__helloworld`
Setelah itu, kita hanya akan membuat placeholder di dalam file update. Ada file SQL khusus untuk masing-masing versi komponen. Setiap nama file harus sesuai dengan string versi yang terdapat di dalam file manifes versi tersebut. Joomla memanfaatkan string ini guna menentukan file SQL mana yang akan dieksekusi serta bagaimana urutannya.
Catatan Penting: File-file ini juga dipakai untuk menentukan angka versi di dalam tabel #__schemas. Angka versi harus tercantum di dalam komponen terkini agar file SQL baru dapat dieksekusi pada saat update. Sebagai contoh, apabila anda memiliki versi 1.0 dan mengupdate ke versi 1.1, file sql 1.1 tidak akan dieksekusi jika tidak ada file sql 1.0 di dalam rilis 1.0 anda. Karena alasan inilah alangkah baiknya jika ada file update SQL untuk masing-masing versi, bahkan ketika tidak ada perubahan SQL di versi itu.
# Placeholder file for database changes for version 1.0.0
Membuat permintaan di file helper
Pada saat pemasangan modul, kita harus temukan database helloworld yang mengandung hello di dalam skema database. Kita harus mendapatkannya dari database sebelum kita bisa menampilkannya ke pengguna. Sekarang, kita akan mengubah fungsi getHello yang dibuat di file helper sebelumnya.
Untuk sekarang, kita akan abaikan dulu pemakaian bidang-bidang formulir untuk hello dan hanya mengambil versi bahasa Inggris saja.
// Obtain a database connection
$db = JFactory::getDbo();
// Retrieve the shout
$query = $db->getQuery(true)
->select($db->quoteName('hello'))
->from($db->quoteName('#__helloworld'))
->where('lang = ' . $db->Quote('en-GB'));
// Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
// Return the Hello
return $result;
Kesimpulan
Pemakaian modul yang terhubung ke database di Joomla cukup sederhana, sebuah proses yang mudah. Melalui teknik-teknik yang dijelaskan di dalam tutorial ini, banyak modul yang dapat dikembangkan dengan sedikit berusaha, dengan update yang mudah untuk dikelola.