Jump to content

¿Cómo añadir contenido (párrafos de texto), en un formulario de configuración?


Recommended Posts

A la hora de crear un formulario de ajustes o configuración para un módulo, podemos utilizar el método generateForm() de la clase HelperForm para incluir todo tipo de opciones de tipo input y botones.

Mi pregunta es... ¿y para añadir texto informativo?. Es decir, simplemente unos párrafos con texto o un aviso con instrucciones para el usuario. ¿Existe alguna forma sencilla de hacerlo, o hay que recurrir a extender la vista del formulario?

Edited by Prestafan33 (see edit history)
Link to comment
Share on other sites

Bueno, me contesto a mí mismo, por si le sirve a alguien más:

Para introducir un mensaje en la parte superior del formulario de configuración tan sólo hay que añadir un índice 'description' en el array de formularios de la página, dentro del array donde se define el contenido del formulario, es decir, algo así como esto:

$fields_form[] = array(
      'form' => array(
        'legend' => array(
          'title' => $this->l('Ajustes generales'),
          'icon' => 'icon-cogs'
        ),
        'description' => $this->l('Descripción del formulario'),
        'input' => array(
		....

Si queremos que los mensajes tengan estilo de aviso, éxito o error, se pueden usar los índices "warning", "success" o "error", en vez de "description".

Luego está la otra solución es la que comentaba en el último párrafo, extender la vista del formulario para añadir la definición de un tipo nuevo de campo. Es decir, crear un archivo en esta ruta: /modules/nombre_del_modulo/views/templates/admin/_configure/helpers/form/form.tpl

A continuación, en dicho archivo, indicar que extiende la vista helpers/form/form.tpl , y definir ahí el HTML que debe generar nuestro nuevo tipo de campo. Por ejemplo:

{extends file="helpers/form/form.tpl"}

{block name="input"}
    {if $input.type == 'info-block'}
      <div class="info-block" style="margin-bottom:20px;">
      {if $input.title}
        <h4 class="info-block-title" style="text-align:center;font-size:15px;">{$input.title}</h4>
      {/if}
      {if $input.contents}
        <div class="info-block-contents" style="background-color:#e0ffe0;color:#000;border:1px solid green;padding:10px 15px;">
          <p>{$input.contents}</p>
        </div>
      {/if}
      </div>
    {else}
        {$smarty.block.parent}
    {/if}
{/block}

Finalmente, para poder usar el nuevo campo desde el archivo principal de nuestro módulo, en donde definimos los campos input para el formulario de configuración, añadiríamos un campo input más tal que así:

array(
    'type' => 'info-block',
    'title' => $this->l('Título para mi bloque'),
    'contents' => $this->l('Texto para el contenido del bloque informativo')
    );

Esta solución es bastante más laboriosa, pero tiene la ventaja de que se pueden colocar varios bloques de texto en cualquier posición del formulario.

Edited by Prestafan33 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...