---
title: Formularios de configuracion en modulos
section: modules
slug: config-forms
description: "Como crear paginas de configuracion en modulos PrestaShop: getContent() con HelperForm legacy, Symfony Form moderno, Configuration API y validaciones."
keywords: prestashop modulo configuracion formulario getContent HelperForm Symfony Form Configuration API
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/modules/config-forms"
---

# Formularios de configuracion en modulos

> Como crear paginas de configuracion en modulos PrestaShop: getContent() con HelperForm legacy, Symfony Form moderno, Configuration API y validaciones.

Todos los modulos de PrestaShop pueden tener una pagina de configuracion accesible desde BO > Modulos > Configurar. Se implementa en el metodo `getContent()` del modulo. Hay dos enfoques: HelperForm (rapido, compatible PS 1.7+) o Symfony Form (moderno, PS 8+).

## Metodo getContent() — pagina de config del modulo

*Estructura base de getContent()*

```php
<?php

/**
 * Se ejecuta cuando el usuario hace clic en 'Configurar' en la lista de modulos.
 * Debe devolver el HTML de la pagina de configuracion.
 */
public function getContent(): string
{
    $output = '';

    // 1. Procesar el formulario si se envio
    if (Tools::isSubmit('submit' . $this->name)) {
        $output .= $this->processConfigForm();
    }

    // 2. Renderizar el formulario con los valores actuales
    $output .= $this->renderConfigForm();

    return $output;
}

private function processConfigForm(): string
{
    $errors = [];

    $apiKey = trim(Tools::getValue('MYMODULE_API_KEY', ''));
    $active = (int) Tools::getValue('MYMODULE_ACTIVE', 0);
    $mode   = Tools::getValue('MYMODULE_MODE', 'sandbox');

    if (empty($apiKey)) {
        $errors[] = $this->trans('La API Key es obligatoria.', [], 'Modules.Mymodule.Admin');
    }

    if (!empty($errors)) {
        return $this->displayError(implode('<br>', $errors));
    }

    Configuration::updateValue('MYMODULE_API_KEY', $apiKey);
    Configuration::updateValue('MYMODULE_ACTIVE', $active);
    Configuration::updateValue('MYMODULE_MODE', pSQL($mode));

    return $this->displayConfirmation(
        $this->trans('Configuracion guardada.', [], 'Modules.Mymodule.Admin')
    );
}
```

## HelperForm — opcion rapida

*renderConfigForm() con HelperForm*

```php
<?php

private function renderConfigForm(): string
{
    $helper = new HelperForm();

    $helper->table           = $this->name;
    $helper->name_controller = $this->name;
    $helper->token           = Tools::getAdminTokenLite('AdminModules');
    $helper->currentIndex    = AdminController::$currentIndex . '&configure=' . $this->name;
    $helper->submit_action   = 'submit' . $this->name;
    $helper->default_form_language = $this->context->language->id;

    $helper->fields_value = [
        'MYMODULE_API_KEY' => Configuration::get('MYMODULE_API_KEY', ''),
        'MYMODULE_ACTIVE'  => Configuration::get('MYMODULE_ACTIVE', false),
        'MYMODULE_MODE'    => Configuration::get('MYMODULE_MODE', 'sandbox'),
    ];

    $form = [[
        'form' => [
            'legend' => [
                'title' => $this->trans('Configuracion', [], 'Modules.Mymodule.Admin'),
                'icon'  => 'icon-cogs',
            ],
            'input' => [
                [
                    'type'     => 'text',
                    'label'    => $this->trans('API Key', [], 'Modules.Mymodule.Admin'),
                    'name'     => 'MYMODULE_API_KEY',
                    'required' => true,
                ],
                [
                    'type'   => 'switch',
                    'label'  => $this->trans('Activo', [], 'Modules.Mymodule.Admin'),
                    'name'   => 'MYMODULE_ACTIVE',
                    'values' => [
                        ['id'=>'on',  'value'=>1, 'label'=>$this->trans('Si', [], 'Admin.Global')],
                        ['id'=>'off', 'value'=>0, 'label'=>$this->trans('No', [], 'Admin.Global')],
                    ],
                ],
                [
                    'type'    => 'select',
                    'label'   => $this->trans('Modo', [], 'Modules.Mymodule.Admin'),
                    'name'    => 'MYMODULE_MODE',
                    'options' => [
                        'query' => [
                            ['id'=>'sandbox',    'name'=>'Sandbox'],
                            ['id'=>'production', 'name'=>'Produccion'],
                        ],
                        'id'   => 'id',
                        'name' => 'name',
                    ],
                ],
            ],
            'submit' => ['title' => $this->trans('Guardar', [], 'Admin.Actions')],
        ],
    ]];

    return $helper->generateForm($form);
}
```

## API Configuration — guardar ajustes

*Metodos de la API Configuration para modulos*

```php
<?php

// ── LEER ──
$value = Configuration::get('MYMODULE_KEY');           // string o false
$value = Configuration::get('MYMODULE_KEY', 'default'); // con valor por defecto
$value = Configuration::get('MYMODULE_KEY', null, null, $idShop); // por tienda

// ── GUARDAR ──
Configuration::updateValue('MYMODULE_KEY', $value);
Configuration::updateValue('MYMODULE_KEY', $value, false, null, $idShop); // por tienda

// ── ELIMINAR (en uninstall()) ──
Configuration::deleteByName('MYMODULE_KEY');

// ── PATRONES RECOMENDADOS ──

// Prefija siempre con el nombre del modulo en mayusculas
// MYMODULE_SETTING en lugar de SETTING

// Lista de claves para limpiar en uninstall()
private array $configKeys = [
    'MYMODULE_API_KEY',
    'MYMODULE_ACTIVE',
    'MYMODULE_MODE',
];

public function uninstall(): bool
{
    foreach ($this->configKeys as $key) {
        Configuration::deleteByName($key);
    }
    return parent::uninstall();
}
```


---

*Fuente: [https://ayudaprestashop.es/modules/config-forms](https://ayudaprestashop.es/modules/config-forms). Version Markdown generada automaticamente para consumo por LLMs.*
