Création d'un module simple - Utilisation de la base de données
From Joomla! Documentation
< J3.x:Creating a simple module
Ceci est une série de plusieurs articles expliquant la façon de développer un module pour Joomla! Version . Vous pouvez naviguer dans les articles de cette série à l'aide du menu déroulant.
Commencez par l'Introduction puis naviguez dans les articles de cette série en utilisant soit les boutons de navigation situés en bas des articles, soit le menu droit (Les articles de cette série).
De nombreux dmodules dans Joomla! nécessitent l'utilisation d'une base de données. Dans ce didacticiel, nous partons du principe que vous connaissez les bases de l'utilisation de la classe JDatabase. Si ce n'est pas le cas, veuillez préalablement consulter accéder à la base de données en utilisant JDatabase.
Création d'une table lors de l'installation
Afin de créer une table xml lors de l'installation, nous allons ajouter les lignes suivantes dans 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>
3 sections sont présentes dans ce code :
- La balise install ajoute la table de base de données.
- La balise uninstall supprime la table de base de données si le module est désinstallé. Notez que tous les modules n'utiliseront pas cette fonctionnalité (elle n'est pas obligatoire).
- La balise update va mettre à jour les base de données si une base de données a besoin d'être modifiée lors de la mise à jour du module.
Ensuite, vous devez spécifier le tag dossierdans la section fichiers pour s'assurer que les fichiers sql soient bien copiés à partir de votre pack zip d'installation :
<folder>sql</folder>
Notez que nous avons à la fois des schémas pour MySQL et pour Microsoft SQL - encore une fois, vous pouvez choisir de personnaliser votre module pour l'un ou l'autre de ces systèmes.
Dans cet exemple, nous allons vous montrer les fichiers d'exemple pour une base de données MySQL. La création d'un serveur Microsoft est laissée à la discrétion du lecteur.
Dans notre fichier install.mysql.utf8.sql, nous allons créer la table et y insérer quelques 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');
Dans le fichier de désinstallation, nous allons simplement supprimer la table.
DROP TABLE IF EXISTS `#__helloworld`
Enfin, nous allons laisser un espace réservé dans le fichier de mise à jour. Il existe un fichier SQL pour chaque version de composant. Chaque nom de fichier doit correspondre à la chaîne de version du fichier de manifeste de cette version. Joomla! utilise cette chaîne pour déterminer les fichiers SQL(s) à exécuter et l'ordre dans lequel ils seront exécutés.
Remarque importante : Ces fichiers sont également utilisés pour définir le numéro de version dans la table #__schemas. Ce numéro de version doit être présent dans la version actuelle du composant pour que les nouveaux fichiers SQL soient exécutés lors de la mise à jour. Par exemple, si vous utilisez la version 1.0 et que vous mettez à jour vers la version 1.1, le fichier sql 1.1. ne sera pas exécuté s'il n'y avait pas de fichier sql 1.0 dans la version 1.0. De ce fait, il est de bonne pratique d'avoir un fichier SQL de mise à jour pour chaque version, même s'il n'y a pas de modification SQL dans cette version.
# Placeholder file for database changes for version 1.0.0
Faire la requête dans le fichier helper
Maintenant, lors de l'installation de notre module, nous devrions trouver une base de données helloworld définie dans notre schéma de base de données contenant notre hello. Nous devons maintenant la récupérer à partir de la base de données pour pouvoir l'afficher à l'utilisateur. Nous allons maintenant modifier la fonction getHello que nous avons placée dans la dernière partie du fichier helper.
Pour l'instant, nous allons ignorer l'utilisation des champs de formulaire pour choisir juste un hello et simplement récupérer le commentaire en anglais.
// 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;
Conclusion
L'utilisation de modules avec des connexions aux bases de données dans Joomla! est assez simple. Grâce à l'utilisation des techniques décrites dans ce didacticiel, de nombreux modules peuvent être développés avec peu de tracas et avec des mises à jour faciles à gérer.