Crear un módulo simple/Agregar Campos de Formulario
From Joomla! Documentation
< J3.x:Creating a simple module
Esta es una serie de artículos múltiples sobre cómo crear un módulo para Joomla! Versión . 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").
Los campos de formulario permiten una gran cantidad de personalización de Joomla y para los módulos son la única manera de permitir al usuario ajustar el módulo a las necesidades de su sitio.
Agregar Campos de Formulario al módulo
En este caso vamos a extender nuestro ejemplo anterior utilizando la base de datos para proporcionar una lista de idiomas para que el usuario los seleccione. Para permitir que esto suceda vamos a utilizar el tipo de campo de formulario SQL (todos los detalles en la página docs Campo de Formulario SQL).
Primero de todo vamos a agregar un campo de formulario en nuestro archivo xml. Recuerdas aquellos de las etiquetas de configuración que hemos añadido anterioremente? Ahora bien, dentro de estas etiquetas, vamos a añadir el siguiente código:
<fields name="params">
<fieldset name="basic">
<field
name="lang"
type="sql"
default="1"
label="Select a language"
query="SELECT id AS value, lang FROM #__helloworld" />
</fieldset>
</fields>
Esto selecciona los idiomas de la tabla de la base de datos y permite al usuario elegirlo a partir de un elemento de selección.
Si se va a instalar el módulo como esta ahora se verá al acceder al módulo en el lado servidor de Joomla, un desplegable ha aparecido (aunque elegir una opción no afectará el módulo por el momento).
Nota: Los parámetros del campo de formulario se almacenan para cada módulo en la tabla #__modules bajo los parámetros del campo como string codificado en json.
Ahora vamos a hacer que el campo de formulario haga algo!
Vamos a entrar en el mod_helloworld.php y recuperar el parámetro (ten en cuenta no se puede recuperar el parámetro en el helper) y luego lo pasamos a la función helper.
/**
* This retrieves the lang parameter we stored earlier. Note the second part
* which assigns the default value of 1 if the parameter cannot be
* retrieved for some reason.
**/
$language = $params->get('lang', '1');
$hello = modHelloWorldHelper::getHello( $language );
Ahora vamos a editar nuestra consulta a la base de datos en el archivo helper para reflejar nuestro parámetro de elección.
// Obtain a database connection.
$db = JFactory::getDbo();
// Retrieve the shout. Note that we are now retrieving the id not the lang field.
$query = $db->getQuery(true)
->select($db->quoteName('hello'))
->from($db->quoteName('#__helloworld'))
->where('id = '. $db->Quote($params));
// Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
// Return the Hello.
return $result;
Conclusión
Los campos del formulario le dan al usuario una manera fácil de personalizar el módulo a la configuración de los sitios. Esto permite aumentar así el alcance de los módulos a muchos idiomas y aplicaciones.