drupal9Viernes, 6 Octubre, 2023

Guardando datos de configuración por código en Drupal 9 y 10

En drupal tenemos datos de configuración como los que se guardan en admin/config/system/site-information como el nombre del sitio, el lema, correo electronico, vamos a estudiar como localizar, leer, editar y crear nuestra propia configuración.

Localizando una configuración

Por ejemplo para los datos almacenados en site-information, podemos:

  a. Ir a nuestro editor de código y buscar el archivo .routing.yml en donde se encuentra la ruta admin/config/system/site-information.

  b. Luego ir al controller correspondiente a de dicho routing que para nuestro ejemplo es la clase SiteInformationForm que define dicho formulario y que extiende de ConfigFormBase. Si bajamos veremos que existe un método getEditableConfigNames() 

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return ['system.site'];
  }

En este código vemos que se está retornando un array con el nombre de configuración que nos interesa system.site, luego si vamos a admin/config/development/configuration/single/export y en nombre de configuración buscamos system.site, entonces veremos los datos almacenados en site-information como en nombre del sitio, el mail, el slogan, la página frontal, etc.

simple configuration drupal 9 y 10

 

Leyendo una configuración

Para cargar las configuraciones dentro de nuestro código, en los controladores existe un método llamado config que nos devuelve la configuración que le endiquemos.

$config_site = $this->config('system.site');

 Aquí estamos cargando la configuración system.site que vimos por la interfaz y la estamos almacenando en la variable $config_site (pero podría tener cualquier otro nombre), ahora dentro de nuestro controller se vería así:

<?php
namespace Drupal\module_base\Controller;

use Drupal\Core\Controller\ControllerBase;

class ExampleConfigurationController extends ControllerBase
{
  public function configExample() {
    $config_site = $this->config('system.site');
    dpm($config_site);
  }
}

En este caso con el método dpm del módulo devel (debemos tener intalado devel previamente) estamos mostrando el contenido de la variable $config_site:

load config from configuration in drupal

Vemos que obtuvimos el name del site, el mail, el slogan y otros elementos más, por lo que ahora veremos como obtener esos elementos de forma individual con el médodo get().

$config_site->get('mail')

Almacenando este retorno en una variable $mail_site obtendríamos el siguiente código:

<?php
namespace Drupal\module_base\Controller;

use Drupal\Core\Controller\ControllerBase;

class ExampleConfigurationController extends ControllerBase
{
  public function configExample() {
    $config_site = $this->config('system.site');
    $mail_site = $config_site->get('mail');
    dpm($mail_site);
    return ['#markup'=> 'Página de configuración'];
  }
}

Esto imprimirá en pantalla el mail del sitio:

printing mail from configuration in drupal

 

Me pareció interesante el artículo

Deseo más información

O también puedes comunicarte con nosotros.

por whatsapp por whatsapp

Añadir nuevo comentario

Me gustaría más información sobre: