logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Formulario de configuración en Drupal

20/06/2025, by Ivan

Parte IV de la guía práctica para crear módulos básicos en Drupal 8
De .info a pruebas, solo lo esencial

Hasta ahora todo está bastante ordenado, pero ¿cómo podemos cambiar lo que vemos? Con algunos formularios, por supuesto.

Para escenarios simples de uso, consulte la sección "Configuraciones del sitio y etiquetas".

/src/Form/LoremIpsumForm.php

<?php

namespace Drupal\loremipsum\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

class LoremIpsumForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'loremipsum_form';
  }

Comenzamos nuestro archivo de configuración extendiendo ConfigFormBase. La clase LoremIpsumForm es la clase especificada en el archivo routing.yml.

A continuación, está el método que realmente construye el formulario de configuración:

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    // Constructor del formulario.
    $form = parent::buildForm($form, $form_state);
    // Configuraciones por defecto.
    $config = $this->config('loremipsum.settings');

La variable $config es donde almacenamos nuestras configuraciones actuales.

Luego definimos nuestros campos del formulario y retornamos el formulario:

    // Campo título de la página.
    $form['page_title'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Título de la página del generador Lorem Ipsum:'),
      '#default_value' => $config->get('loremipsum.page_title'),
      '#description' => $this->t('Asigne un título a la página del generador Lorem Ipsum.'),
    );
    // Campo texto fuente.
    $form['source_text'] = array(
      '#type' => 'textarea',
      '#title' => $this->t('Texto fuente para la generación de lorem ipsum:'),
      '#default_value' => $config->get('loremipsum.source_text'),
      '#description' => $this->t('Escriba una oración por línea. Estas oraciones se usarán para generar texto aleatorio.'),
    );

    return $form;
  }

También debemos declarar los métodos validateForm(), submitForm() y getEditableConfigNames(), incluso si no los usamos:

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {

  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this->config('loremipsum.settings');
    $config->set('loremipsum.source_text', $form_state->getValue('source_text'));
    $config->set('loremipsum.page_title', $form_state->getValue('page_title'));
    $config->save();
    return parent::submitForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      'loremipsum.settings',
    ];
  }

}

 

Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.