Formulario de configuración en Drupal
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', ]; } }
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.