J3.x

Difference between revisions of "Creating a simple module/Using the Database/es"

From Joomla! Documentation

< J3.x:Creating a simple module
(Created page with "Ahora en la instalación de nuestro módulo debemos saber que hay una tabla helloworld en la base de datos establecida en nuestro esquema de base de datos donde se encuentran...")
(Created page with "Por ahora vamos a ignorar el uso de campos de formulario para elegir un saludo y recuperaremos sólo el saludo en inglés.")
Line 71: Line 71:
 
Ahora en la instalación de nuestro módulo debemos saber que hay una tabla helloworld en la base de datos establecida en nuestro esquema de base de datos donde se encuentran nuestros saludos. Ahora debemos recuperar esto de la base de datos para mostrar al usuario. Ahora vamos a modificar la función ''getHello'' que ubicada en la última parte del archivo helper.
 
Ahora en la instalación de nuestro módulo debemos saber que hay una tabla helloworld en la base de datos establecida en nuestro esquema de base de datos donde se encuentran nuestros saludos. Ahora debemos recuperar esto de la base de datos para mostrar al usuario. Ahora vamos a modificar la función ''getHello'' que ubicada en la última parte del archivo helper.
  
For now we'll ignore using form fields to choose a hello and just retrieve the English shout.
+
Por ahora vamos a ignorar el uso de campos de formulario para elegir un saludo y recuperaremos sólo el saludo en inglés.
  
 
<source lang="php">
 
<source lang="php">

Revision as of 14:19, 28 August 2015

Other languages:
Bahasa Indonesia • ‎English • ‎Nederlands • ‎español • ‎français • ‎português • ‎português do Brasil • ‎русский • ‎中文(台灣)‎
Joomla! 
3.x
Tutorial
Crear un módulo simple

Esta es una serie de artículos múltiples sobre cómo crear un módulo para Joomla! Versión Joomla 3.x. Puedes navegar por los artículos en esta serie usando el menú desplegable de navegación.

Comienza con la Introducción y navega por los artículos de esta serie usando el botón de navegación en la parte inferior o en el cuadro de la derecha ("Artículos de esta serie").




Muchos de los módulos en Joomla, requieren el uso de una base de datos. Se asume en este tutorial que ya entiendes los conceptos básicos del uso de la clase JDatabase. Si no por favor, lee la documentación en Acceder a la base de datos mediante JDatabase antes de continuar con este tutorial.

Crear una tabla en la instalación

Para crear el xml de la tabla en la instalación, vamos a añadir las siguientes líneas en "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>

Hay 3 secciones en este código:

  • La etiqueta install agrega la tabla a la base de datos.
  • La etiqueta uninstall elimina la tabla de la base de datos si el módulo es desinstalado. Ten en cuenta que no en todos los módulos se desea utilizar esta función (y no es obligatorio).
  • La etiqueta update actualiza la tabla de la bases de datos si la tabla necesita ser modificada a la hora de actualizar el módulo.

Ten en cuenta que tenemos ambos esquemas para MySQL y Microsoft SQL - otra vez puedes elegir, para personalizar tu módulo, por uno o ambos de estos sistemas.

En este ejemplo vamos a mostrar sólo los archivos de ejemplo para la base de datos MySQL. La creación de Microsoft SQL Server se deja como ejercicio para el lector.

En nuestro archivo install.mysql.utf8.sql vamos a crear la tabla y colocar algunos saludos en ella.

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=MyISAM 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');

En el archivo de desinstalación sólo tendremos que quitar la tabla.

DROP TABLE IF EXISTS `#__helloworld`

Finalmente, sólo tendremos que dejar un marcador de posición en el archivo de actualizaciones. Hay un archivo SQL para cada versión del componente. Cada nombre de archivo debe coincidir con la cadena de versión en el archivo manifest para esa versión. Joomla utiliza esta cadena para determinar qué archivos SQL(s) ejecutar y en qué orden se van a ejecutar.

Nota importante: Estos archivos también se utilizan para establecer el número de versión en la tabla #__schemas. Este número de versión debe estar presente en la versión actual del componente para que los nuevos archivos de SQL que se ejecuten durante la actualización. Por ejemplo, si usted tiene la versión 1.0 y la actualización es a la versión 1.1, el archivo 1.1.sql no se ejecuta si no había un archivo 1.0.sql en la versión 1.0. Por esta razón, es una buena práctica tener un archivo SQL de actualización para cada versión, incluso si no hay ningún SQL cambio en esa versión.

# Placeholder file for database changes for version 1.0.0

Realizar la consulta en el archivo helper

Ahora en la instalación de nuestro módulo debemos saber que hay una tabla helloworld en la base de datos establecida en nuestro esquema de base de datos donde se encuentran nuestros saludos. Ahora debemos recuperar esto de la base de datos para mostrar al usuario. Ahora vamos a modificar la función getHello que ubicada en la última parte del archivo helper.

Por ahora vamos a ignorar el uso de campos de formulario para elegir un saludo y recuperaremos sólo el saludo en inglés.

// 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

Using modules with database connections for Joomla! is a fairly simple, straightforward process. Using the techniques described in this tutorial, a lot of modules can be developed with little hassle, with updates easy to manage.