Een eenvoudige module maken - De database gebruiken
From Joomla! Documentation
< J3.x:Creating a simple module
Dit is een serie artikelen over het ontwikkelen van een module voor Joomla! versie . U kunt navigeren binnen de artikelen in deze serie met behulp van het navigatie drop-down menu.
Begin met de Introductie en navigeer door de artikelen van de serie door middel van de navigatieknop onderaan of het vak rechts (Artikelen in deze serie). Er zitten 2 video's bij deze handleiding die u hier kunt zien Basic Joomla Module Development video 1 en Basic Joomla Module Development video 2.
Veel modules in Joomla vereisen het gebruik van een database. Er wordt in deze handleiding vanuit gegaan dat u de basis van het gebruik van de JDatabase class al begrijpt. Zo niet: Lees alstublieft de documentatie op de database benaderen met behulp van JDatabase voor met deze handleiding verder te gaan.
Een tabel aanmaken bij installatie
Om de tabel bij installatie aan te maken voegen we de volgende xml regels toe aan 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>
Er zitten 3 secties in deze code:
- De install tag voegt de database tabel toe.
- De uninstall tag verwijdert de database tabel als de module gedeïnstalleerd wordt. Let op dat niet alle modules deze functie willen gebruiken (en het is niet verplicht).
- De update tag werkt de databases bij als een database gewijzigd moet worden bij het bijwerken van de module.
Vervolgens moet u de folder tag opgeven in de files sectie om ervoor te zorgen dat de sql bestanden gekopieerd worden uit uw installatie zip pakket:
<folder>sql</folder>
Let op dat we schema's hebben voor zowel MySQL als Microsoft SQL - u kunt ervoor kiezen uw module op maat te maken voor één of voor beide systemen.
In dit voorbeeld tonen we alleen de voorbeeld-bestanden voor de MySQL database. Het aanmaken van Microsoft SQL Server wordt als oefening aan de lezer over gelaten.
In ons install.mysql.utf8.sql bestand maken we de tabel aan en we zetten er een paar 'hello's' in.
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');
In het deïnstallatie bestand verwijderen we de tabel gewoon.
DROP TABLE IF EXISTS `#__helloworld`
Uiteindelijk zetten we een tijdelijke aanduiding in het bijwerk-bestand. Er is een SQL bestand voor iedere versie van de component. Elke bestandsnaam moet overeenkomen met de versie string in het manifest-bestand van die versie. Joomla gebruikt deze string om te bepalen welke SQL bestand(en) en in welke volgorde ze uit te voeren.
Belangrijke opmerking: Deze bestanden worden ook gebruikt om het versienummer in te stellen in de #__schemas tabel. Dit versienummer moet aanwezig zijn in in de huidige versie van de component om de nieuwe SQL bestanden te kunnen draaien bij het bijwerken. Als u bijvoorbeeld versie 1.0 hebt en update naar versie 1.1, dan zal het 1.1.sql bestand niet uitgevoerd worden als er geen 1.0.sql bestand zat in de 1.0 release. Om deze reden is het goed om een SQL update bestand te hebben in iedere versie, zelfs als er geen SQL wijziging in die versie zit.
# Placeholder file for database changes for version 1.0.0
De aanroep doen in het helper bestand
Na het installeren van onze module zullen we nu ontdekken dat er een helloworld database is ingericht in ons database schema met onze hello's daarin. We moeten ze nu ophalen uit de database om ze te tonen aan de gebruiker. We zullen nu de getHello functie wijzigen die we in het helper bestand plaatsten aan het eind.
We negeren voorlopig het gebruik van formuliervelden nog om een hello te kiezen en halen slechts de Engelse kreet op.
// 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;
Conclusie
Het gebruik van modules met database koppelingen in Joomla! is een tamelijk eenvoudig, duidelijk proces. Met behulp van de beschreven technieken in deze handleiding kunnen veel modules ontwikkeld worden met weinig gedoe en goed te beheren updates.