J3.x

Crear un módulo simple/Agregar Campos de Formulario

From Joomla! Documentation

< J3.x:Creating a simple module
Revision as of 14:37, 28 August 2015 by Abulafia (talk | contribs)
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎português • ‎русский • ‎中文(台灣)‎
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").




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).

First of all we are going to add a form field into our xml file. Remember those config tags that we added in earlier? Well now inside these tags we are going to add the following code:

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

This selects the languages from the database table and allows the user to choose which one from a select element.

If you were to install the module as it is now you would see if you were to access the module in the backend of Joomla that a dropdown had appeared (although picking an option won't affect the module at the moment).

Note: The form field parameters are stored for each module in the #__modules table under the params field as json encoded string.

Now lets make the form field do something!

Lets go into the mod_helloworld.php and retrieve the parameter (note you cannot retrieve the parameter in the helper), and then pass it into the helper function.

/**
  * This retrieves the lang parameter we stored earlier. Note the second part
  * which states to use the default value of 1 if the parameter cannot be
  * retrieved for some reason
**/
$language = $params->get('lang', '1');
$hello    = modHelloWorldHelper::getHello( $language );

Now lets edit our database query in the helper file to reflect our parameter choice.

// Obtain a database connection
$db = JFactory::getDbo();
// Retrieve the shout - note 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;

Conclusion

Form fields give the user an easy way to customise the module to their sites settings. This allows the modules scope to be increased as well for many languages and applications.