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.
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:
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:
Me pareció interesante el artículo
Añadir nuevo comentario