usuarios

Rest Services en Drupal 9 (Parte 2)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

      Siempre que trabajemos con proyectos en los que tengamos que testear la funcionalidad de API Rest, es recomendable que utilicemos las herramientas que facilitarán nuestras tareas de testeo, de manera que resulte más simple, el proceso de identificación de posibles errores, aplicar nuevas funcionalidades o crear documentación relacionada con el proceso.

     En nuestro caso, como estaremos trabajando con servicios del tipo REST en Drupal, vamos a tener que realizar varias comprobaciones, sobre las llamadas hacia nuestra API, utilizando GET, POST, PATCH y DELETE, con los cuales obtendremos información desde Drupal, como hemos explicado en el artículo anterior, Cómo trabajar con Rest en Drupal 9 (Parte 1), además de realizar otras operaciones como Añadir, Actualizar o borrar contenidos, por medio de estos métodos.

     En las siguientes líneas trataré de explicar, de la manera resumida, los principios fundamentales para entender, cómo aplicar llamadas a la API Rest que nos permitan la ejecución de las principales operaciones, al emplear esta clase de sistema, con Drupal 9.

     Una de estas herramientas de desarrollo es Postman, que nos ofrece una interfaz gráfica, en la que podremos realizar varios tipos de operaciones relacionadas con API Rest, para facilitarnos el proceso de testeo para nuestros proyectos. Puedes descargar Postman desde su página oficial.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora que ya hemos configurado los servicios dentro de Drupal, para autorizar las consultas, mediante el uso de GET, y obtener así el contenido de varios nodos, vamos a realizar la misma comprobación ejecutando la llamada en Postaman, para ello, una vez descargada la aplicación Postman,  copiaremos la url o "endpoint", que nos devolverá el listado de los nodos de nuestra página de inicio, tal y como los expliqué en el artículo anterior Cómo trabajar con Rest en Drupal 9 (Parte 1), y deberíamos obtener exactamente el mismo resultado.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

    Métodos de autenticación:

          Cuando realizamos llamadas a un API Rest, necesitaremos al menos un método de autenticación, de esa forma, estaremos diciéndole a nuestra aplicación, que tenemos los permisos necesarios para acceder a la información con la que vamos a trabajar.

          Existen varias formas de autenticarnos, a la hora de trabajar con las llamadas al API REST, una de ellas, es el uso de cookies; y aunque generalmente, el uso del método Get para obtener información mediante API REST, no debería necesitar ningún tipo de autenticación, ya que sólo estamos accediendo a información pública, expuesta a cualquier usuario desde nuestro servidor web, al trabajar con los servicios REST en Drupal, nos exige que al menos activemos un método de autenticación.

         Es por esta razón, por la cual lo hicimos en el artículo anterior, al momento de activar nuestro primer servicio con el Método Get, para leer la información sobre los nodos desde nuestro Drupal.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Por defecto, Drupal utiliza el sistema de Cookies para informarse sobre los datos de nuestro usuario, es por esta razón que al loguearnos en cualquier web de Drupal, la interfaz nos permitirá ver los contenidos para los que tengamos acceso, si somos los administradores, veremos la interfaz del administrador y si somos usuarios de cualquier otro tipo, nos presentará la interfaz de usuario correspondiente.

          Si quieres comprobar las cookies que genera Drupal automáticamente cuando estás logueado como usuario, puedes hacer clic derecho y seleccionar inspeccionar elemento o presionar la tecla F12, en mi caso utilizo Google Chorme, si tu también lo hacer, deberías ver algo como lo que te presento en la siguiente imagen, He seleccionado la pestaña Network y tengo marcada la opción Preserve log, al hacer clic sobre Headers verás la información que estamos enviando a nuestro servidor, donde está alojada la web de Drupal y dentro de estas informaciones podrás comprobar la existencia de las cookies.

          Aunque el uso de Cookies es un método que funciona para que Drupal nos devuelva información, en el caso de una aplicación externa, ubicada en otro servidor, por ejemplo, que quisiera obtener información mediante API REST, necesitaremos un método de autenticación más robusto, porque para Drupal, como cualquier otra aplicación a la que accedamos por servicios web, quien acceda usando este tipo de autenticación, podrá operar con todos los permisos concedidos para ese usuario.

         Otra forma de identificarnos como usuario con permisos frente a Drupal, utilizando API REST, es el uso del TOKEN DE SESIÓN, con el que le diremos a Drupal todo lo que necesita saber acerca de nuestro usuario, para que pueda ofrecernos lo que vamos a necesitar al conectarnos con él.

         Hasta las primeras versiones de Drupal 8, para obtener el TOKEN DE SESIÓN, bastaba con añadir a la url de nuestra web, una vez activado el módulo rest "http//miweb.com/rest/session/token", esto nos imprimía en la pantalla el valor correspondiente, que tendríamos que copiar dentro de los parámetros de configuración, para nuestra API rest.

         Esta opción fue eliminada a partir de las últimas actualizaciones de Drupal 8, por lo que ya no existe en Drupal 9 ni versiones posteriores. En su lugar se añadió un módulo contribuido llamado REST API Access Token, con el cual, según la página oficial:

     "El módulo REST API Access Token proporciona un proveedor de autenticación Drupal que utiliza tokens (en encabezados) como factor principal de autenticación.
Además, el módulo proporciona verificación de firmas para solicitudes y caché de respuestas."

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

        Necesitaremos descargar e instalar este módulo, para realizar las pruebas con las llamadas a la API REST, cuando trabajemos con los métodos POST, PATCH y DELETE, que explicaremos en el siguiente artículo, pero antes de terminar, vamos a hablar de una última herramienta que necesitaremos para testear nuestros servicios web...     

     CURL

          Según la página oficial de PHP: PHP soporta libcurl, una biblioteca creada por Daniel Stenberg que permite conectarse y comunicarse con diferentes tipos de servidores y diferentes tipos de protocolos. Actualmente, libcurl admite los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también admite certificados HTTPS, HTTP, POST, HTTP PUT, subidas mediante FTP (también se puede hacer con la extensión FTP de PHP), subidas basadas en formularios HTTP, proxies, cookies, y autenticación usuario+contraseña.

         Dependiendo del sistema operativo con el que estés trabajando, y de la versión de PHP que tengas instalada, la manera en que se configura CURL variará, por lo tanto, sería recomendable que compruebes si la tienes configurada correctamente en tu servidor antes de comenzar con la siguiente fase de estos ejercicios.

    Cómo comprobar si tengo instalado CURL en Drupal 9

          En todas las instalaciones de Drupal, podremos acceder a una página que nos detallará las informaciones principales, relacionadas con las informaciones más relevantes sobre nuestro servidor, Mysql, Php, además de otras relacionadas directamente con la configuración interna de Drupal. 

          Obviamente, para acceder a estos datos necesitarás tener permisos de administrador, y estar logueado dentro de tu web. La url es "/admin/reports/status". Una vez hayas accedido a esta pantalla, podrás hacer clic en el apartado MAS INFORMACIÓN de PHP, donde podrás ver el phpinfo, y comfirmar si ya tienes habilitada esta librería en tu entorno.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Rest Services en Drupal 9 (Parte 1)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

      Siguiendo con las opciones disponibles para combinar, el uso de Drupal como Backend, con librerías JavaScript del tipo Vue.js o Angular, para el Frontend; hoy abordaré los principios básicos sobre recursos Rest en Drupal 9, para que puedas comenzar a experimentar.

     A partir de su versión 8, se añadieron varios módulos en el núcleo de Drupal, con el fin de facilitarnos la activación de los más utilizados, como es el caso de los servicios web, ya que es cada vez más frecuente, encontrarnos con proyectos, que requieren conectar un sistema robusto de gestión como ofrece Drupal, con aplicaciones para móviles o simplemente, para añadir una presentación de contenidos más flexible, atractiva y amigable de cara a los usuarios finales.

     Con el módulo Rest entre otras opciones, podremos generar, de forma sencilla, todo tipo de contenidos e información en formato Json o XML, además de configurar accesos, para la gestión de usuarios y contenidos a través del uso de APIs, desde prácticamente cualquier tipo de aplicación disponible.

Requisitos:

     - Tener una web Drupal en funcionamiento, con varios contenidos preferiblemente con taxonomías, imágenes, textos y usuarios creados, para que puedas realizar diferentes pruebas.

     Si no tienes contenidos, o prefieres generar contenido de prueba, para realizar tus configuraciones, puedes utilizar el módulo Devel Generate, integrado en el módulo Devel, con el cual podrás generar todo el contenido que necesites basándote en los tipos de contenido que prefieras, haciendo únicamente un par de clics.

     Aquí tienes la explicación de Cómo generar contenidos de Prueba con el módulo Devel

     - Descargar y activar el módulo Rest UI, para facilitar la gestión de los endpoints y accesos utilizando la interfaz de Drupal. Aunque en la página oficial de módulo sólo especifica que es compatible para la versión 8, si lo descargas usando Composer podrás utilizarlo en tu Drupal 9.

Cómo trabajar con Rest en Drupal 9  

     Paso 1 Activación de módulos RESTfull Web Services y Serialization:

          Con la activación y combinación de estos módulos, incluidos en el núcleo de Drupal, a partir de la versión 8, podremos, entre otras cosas, crear nuevas vistas, que nos mostrarán el contenido en formato Json o también podremos añadir vistas de este tipo a otras ya existentes.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Además de esto módulos, antes de continuar, aprovecharemos para descargar y activar el módulo REST UI que mencionamos en los requisitos, para realizar configuraciones relacionadas con REST, a través de la interfaz de usuario de Drupal.

     Paso 2 Descarga y activación del módulo REST UI:

          Descarga y Activación REST UI:

               Para descargar y activar cualquier módulo de Drupal tienes varias opciones:

     Descarga:

          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:

composer require drupal/restui

 

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          2.- Descargándolo manualmente el módulo desde la página oficial del Módulo Rest UI  y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.

     Activación:

          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente.

drush en restui -y

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.

     Paso 3 Creación y configuración de una vista en formato Json:

          La primera novedad que podremos comprobar, una vez activados los módulos RESTful Web Services y Serialization, es que si nos vamos a la pantalla para la creación de vistas, en la url "/admin/structure/views/add" y seleccionamos Agregar vista, podremos ver en la parte inferior una nueva opción, llamada Configuración de exportación REST.

         Si seleccionamos esta opción, nos creará una vista en la que podremos mostrar los datos en formato json o xml.

 

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Vamos a comenzar con la creación de una vista tipo REST, en la que mostraremos el listado de artículos, para este ejercicio puedes utilizar el módulo Devel Generate, para crear contenidos de prueba con un par de clics, o si lo prefieres, crear algunos artículos manualmente.

     Una vez tengas los artículos que vas a mostrar en tu vista, puedes aplicar la misma configuración que te muestro en la siguiente imagen, con estas opciones seleccionadas, haremos clic en el botón Guardar y editar, para que se nos abra la pantalla de configuración donde terminaremos de realizar los ajustes necesarios para obtener nuestro objetivo.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez que estemos dentro de la pantalla de configuración de nuestra vista, el primer cambio que deberíamos realizar es modificar la configuración para que el contenido de la vista se muestre en formato json.

     Para ello, primero haremos clic en configuración, dentro del apartado FORMATO, tal y como te muestro en pantalla:

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     A continuación, para este ejercicio, seleccionaremos el formato json y una vez hayamos aplicado el cambio, inmediatamente podremos ver cómo se muestran nuestros artículos en formato json, dentro de nuestra v

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para este ejemplo hemos creado un sólo artículo, pero nuestra vista muestra un montón de información, debido a que en el FORMATO, está marcada la opción de Mostrar: Entidad, lo que significa que mostrará mucho más de lo que necesitaríamos para realizar consultas y conexión con alguna aplicación.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una consulta como esta consumiría una gran cantidad de recursos para su ejecución, por lo que se verían afectados el tiempo de respuesta y por lo tanto el resultado final de nuestro desarrollo.

     Para evitar que Drupal nos devuelva información innecesaria por ahora, cambiaremos la opción del Formato, para obtener sólo algunos campos, en lugar de toda la entidad; para nuestro ejemplo, seleccionaremos el título, el autor y la fecha de creación. 

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez añadidos los campos, el resultado final es un listado mucho más sencillo y fácil de leer y manipular:

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 4 Comprobación de la vista en el navegador:

          Para comprobar que nuestra vista en formato Json funciona correctamente, tendremos que acceder con la url que hemos configurado al crearla y el resultado debería ser el mismo que hemos visto en la pantalla de configuración, en mi caso he añadido la extensión de Chorme llamada JSON Viewer:

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Cómo mostrar contenidos de Drupal, en formato json, sin tener que configurar una vista

           Ya conocemos la manera de generar vistas para obtener resultados en formato Json, pero además, podremos acceder directamente a un contenido en concreto, también en formato json, añadiendo a la url de nuestra web, las especificaciones del formato requerido. 

          Por ejemplo, podremos acceder a nuestro artículo 1, o node/1 para que se nos muestre en formato json, añadiendo al final de la url las especificaciones del formato.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          En nuestro caso, sería algo como esto http://drupal9.localhost/node/1?_format=json, si hacemos la prueba en el navegador nos devolverá algo parecido a la siguiente imagen:

 

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Si hemos obtenido este resultado, es debido a que todavía nos falta indicarle a Drupal, que nos permita acceder de esta forma. Para lograrlo tendremos que habilitar los recursos utilizando el módulo REST UI, Así que nos iremos a la url "/admin/config/services/rest" y dentro buscaremos y activaremos el recurso que nos permita acceder a los contenidos utilizando get, tal y como te muestro a continuación:

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Tan pronto como realicemos estos cambios, si volvemos a nuestro navegador y refrescamos, veremos un contenido similar al que mostrábamos en la vista.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Cómo acceder a vistas ya existentes para que se muestren en formato Json

          Al igual que hemos hecho para acceder a los datos de un nodo, podríamos intentar realizar la misma operación llamando a una vista existente. Por ejemplo, a partir de Drupal 8, en el listado de las vistas, podremos encontrar una llamada frontpage, que nos muestra por defecto todos los contenidos que hayamos creado, sino hemos realizado ninguna otra configuración, para que se muestre otro tipo de página como inicio de nuestra web.

          Cómo vemos en la imagen, la url para esta vista frontpage es /node, por lo tanto, si queremos que nos devuelva sus contenidos en formato json, tendremos que añadir un modo de vista REST, desde la pantalla de configuración, luego le asignaremos una url, por ejemplo /node/rest y realizaremos los mismos cambios del formato que efectuamos en el primer ejemplo de este artículo.

 

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Cuando hayamos terminado la configuración de nuestra nueva vista, a la que accederemos por la url "node/rest", tendremos que habilitar el recurso, antes de poder escribir en el navegador "http://drupal9.localhost/node/rest?_format=json", ya que si lo hacemos, sin habilitar el recurso, nos devolverá un error al igual que nos sucedió al intentarlo con el nodo.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Por lo tanto, si escribimos en el navegador las mismas especificaciones de formato que aplicamos, para acceder al node/1, deberíamos obtener la vista de nuestra página principal en formato Json.

     Pero, como habrás imaginado, al igual que hicimos con el recurso para acceder al nodo, tendremos que activar otro recurso para lograr este nuevo objetivo.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora que ya sabes cómo habilitar los recursos del módulo REST UI, para acceder a los contenidos, y obtener resultados en formato JSON, si escribes en el navegador, la url para mostrar tu vista "node/rest", con el formato especificado, entonces deberías ver algo parecido a la imagen siguiente, que será equivalente al contenido y campos que hayas configurado en tu vista.

     En este segundo ejemplo con vistas, he añadido el campo título y el campo body.

Rest Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Web Services | Configuración de Servicio personalizado en Drupal 9

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

      ¿Qué es un Servicio?

          Nuestras aplicaciones están llenas de objetos útiles. Un ejemplo de ello es el objeto "Mailer", cuya implementación está relacionada con la gestión de mensajería y correos electrónicos, o por ejemplo, otros objetos, que nos ayudarán con toda clase de operaciones, relacionadas con tablas y bases de datos.  En resumen, casi todo lo que podemos ejecutar dentro de nuestras aplicaciones, se hace posible a través del uso o implementación de estos objetos.        

          En Symfony, a estos objetos se les conoce como Servicios, y cada servicio, a su vez, habita dentro de un objeto especial llamado Service Container, o contenedor de servicios.

         Debido a que, a partir de la versión 8, el núcleo de Drupal está basado en Symfony, podremos acceder y utilizar estos servicios, además de la posibilidad de crearlos a medida, para implementarlos dentro de nuestros proyectos.

         El proceso de creación e implementación de un servicio en Drupal 9, es relativamente simple. Se trata de crear nuestra clase, dentro del módulo personalizado y a continuación, declararla como servicio para poder reutilizarla en cualquier parte del proyecto, mediante el método conocido como Injección de dependencias. Pero antes de ir más allá, vamos a concentrarnos en conocer los fundamentos relacionados con la creación e implementación de un servicio personalizado en Drupal 9.

     Cómo crear un servicio personalizado en Drupal 9  

          Paso 1 - Creación de módulo personalizado:

               Cómo hemos mencionado antes, lo primero que debemos hacer antes de la creación del servicio, es crear nuestro propio módulo personalizado; si todavía no sabes cómo hacerlo, te invito a que pares un momento, antes de continuar,  y eches un vistazo al artículo Cómo crear un módulo en Drupal 9, donde te explico paso a paso y con un video, cómo hacerlo.

Web Services Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony
name: Saludo Service
description: 'Create A service Example'
package: drupaladicto

type: module
core_version_requirement: ^8.8.0 || ^9.0

          Paso 2 - Creación de nuestro servicio personalizado:

              Ahora que ya tenemos nuestro módulo personalizado, vamos a proceder con la creación del servicio. Para este ejemplo, crearemos un servicio al que llamaremos , SaludoService.php y que nos devolverá, mediante el método getSaludo(), y de forma aleatoria, varias frases que solemos utilizar para saludar.

              Si quieres más información relacionada con la estructura de los servicios y otros datos relacionados, puedes visitar la Página Oficial de Drupal

              La clase deberá estar ubicada dentro de la carpeta src, tal y como te muestro en la siguiente imagen:

Web Services Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

A continuación, copia y pega el código dentro de nuestra clase:              

<?php

namespace Drupal\saludo_service;

/**
 * @file
 * Service Example
 */

class SaludoService {

  private $saludo;

  /**
   * Passing parameter to construct method
   */
  public function __construct(){

    $this->saludo = ['Hola','¿Qué tal estás?', 'Buenos Días!!'];

  }

  /**
   * @return string
   */
  public function getSaludo(){

    return $this->saludo[array_rand($this->saludo)];
  }

}

     Paso 3 - Declaración del servicio:

          Como comentábamos al principio de este artículo, los servicios se alojan dentro de un contenedor llamado Service Container, desde donde podrán ser llamados para utilizarlos dentro de cualquier lugar de la web mediante la Injección de Dependencias, para que nuestro servicio personalizado pueda cumplir con esta característica y por lo tanto, se incluido en este contenedor de servicios, tendremos que declararlo como tal, creando el archivo ".service.yml"., al mismo nivel que está nuestro ".info.yml"

Web Services Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Dentro de este nuevo archivo, tendremos la estructura que te muestro a continuación, en la cual simplemente estamos declarando el servicio y a continuación, añadimos la ubicación de nuestro servicio. Recuerda respetar los espacios del formato "yml" o no funcionará. Además evita el uso de la tecla TAB para los espacios, en su lugar utiliza la barra espaciadora del teclado.

services:
  saludo_service.saludando:
    class: Drupal\saludo_service\SaludoService

     Paso 4 - Testeo del servicio utilizando un controlador:

          Aunque en versiones anteriores a Drupal 9, podíamos comprobar la ejecución de código PHP, directamente utilizando la interfaz de usuario, a la que se añadía esta opción cuando activábamos el modulo Devel, ésta fue eliminada del mismo, por motivos de seguridad. 

          Por esta razón, para poder comprobar nuestro servicio, en lugar de utilizar PHP Unit, utilizaremos un controlador, que nos permitirá crear una página test, donde podremos ver y comprobar el funcionamiento de nuestro servicio, una vez hayamos instalado y activado nuestro módulo personalizado.

          Para imprimir el contenido del servicio, crearemos una variable a la que asignaremos el método "getSaludo(); ", que hemos definido dentro de nuestro servicio y luego imprimiremos su valor utilizando la función ksm() del modulo Devel.

          Si todavía no sabes cómo crear un controlador en Drupal 9, te invito a que pares un momento antes de continuar y eches un vistazo a este artículo donde explico, con un video y su documentación paso a paso Cómo crear módulos con su Controlador y Plantilla en Drupal 9

          El siguiente código es el que deberá tener nuestra clase controlador SaludoServiceController.php para generar la página y posteriormente llamar al servicio e imprimir los resultados de prueba.

<?php

/**
 * @file
 * Implement hook_controller()
 */

namespace Drupal\saludo_service\Controller;

use Drupal\Core\Controller\ControllerBase;


class SaludoServiceController extends ControllerBase {


  public function content(){


    $miservicio = \Drupal::service('saludo_service.saludando');
    $misaludo = $miservicio->getSaludo();

    ksm($misaludo);

    return [
      '#markup' => $this->t('Hello @misaludo', ['@misaludo' => $misaludo ]),
    ];

  }
}

          Además, te dejo el código del archivo saludo_service.routing.yml, donde he definido la dirección a nuestro controlador y su método content para acceder a la página test.

saludo_service.saludopage:
  path: '/test-page'
  defaults:
    _controller: '\Drupal\saludo_service\Controller\SaludoServiceController::content'
  requirements:
    _permission: 'access content'

 

          Cuando hayas comprobado que no te falta ningún archivo, podrás activar el módulo y acceder a la url definida en el path del routing.yml "/testpage" y deberías ver el mismo resultado que te muestro a continuación.

Web Services Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Webservices | Presentación

Un servicio web (en inglés, web service o web services) es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.

En este curso recorreremos las diferentes formas de trabajar con servicios web utilzando Drupal. De esta forma, podrás entender cómo conectar Drupal con otras aplicaciones para el intercambio de información.

Newsletter Drupal 9 (Parte 2)

Video de Youtube
URL de Video remoto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

     Ahora que ya hemos comprobado la configuración de los módulos Switfmailer y Mail System, que hemos realizado la primera comprobación, de que se pueden enviar correos desde nuestro entorno de desarrollo, y además hemos activado y configurado nuestro módulo Simplenews, es el momento de realizar nuestra primera prueba de envío de la Newsletter o Boletín.

     Cómo añadir un usuario o usuarios a nuestra Newsletter

          Aunque nuestros usuarios podrán suscribirse automáticamente, utilizando el bloque de suscripción que activamos en el capitulo anterior, también podremos realizar varias operaciones, como añadir o eliminar usuarios en masa suscritos a nuestra Newsletter, también podremos ver el listado actual de suscripciones o exportarlas en un formato compatible con hojas de cálculo, todo esto a través de la interfaz de usuario, como administradores del portal que somos.

         Para acceder a estas opciones, iremos a la url "/admin/people/simplenews", o nos iremos a la pantalla de usuarios, url "/admin/people/" y seleccionaremos la pestaña "Subscribers".

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Cómo comprobar el envío de correos a nuestro suscriptor de prueba

          De esta forma, ya podremos comenzar a realizar las pruebas de envío de la Newsletter o Boletín, desde la interfaz, y confirmaremos cómo lo recibirá el usario final en su bandeja de entrada, utilizando el enlace que nos ha mostrado la consola al ejecutar ddev describe, al menos en mi caso, porque he optado por utilizar ddev en mi instalación de Drupal.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

         Si no haz usado ddev, también podrías optar por configurar un servidor SMTP local, para el envío de tus correos durante el período de desarrollo, lo importante es que puedas acceder a una bandeja de entrada, que será en la que comprobarás cómo se recibe tu Newsletter. 

          Puedes aprender Cómo instalar y configurar Postfix como servidor SMTP solo de envío en Ubuntu 20.04 y cuando lo tengas todo listo, pasar al siguiente paso, que será la configuración de tu Newsletter.

     Cómo enviar Newsletter usando un tipo de contenido Newsletter Issue

          La actual versión del módulo Simplenews, nos permitirá enviar Newsletter utilizando varias opciones, podremos usar el modelo o tipo de contenido Newsletter Issue, para ello, seleccionaremos como cualquier otro tipo de contenido, crear nuevo, rellenaremos los campos, que en este caso sólo son el título y el body, y una vez guardados los cambios, haremos clic en el botón Boletín o Newsletter, que nos abrirá la ventana de envió de PRUEBAS y/o del DEFINITIVO, según lo que necesitemos.

 

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Cómo enviar Newsletter usando HTML y Plantillas gratuitas

          Cómo Drupal nos permite utilizar, dentro del campo body, varios formatos, como son HTML básico, HTML restringido y HTML completo, podremos emplear el tipo de contenido Newsletter Issue, para enviar cualquier Newsletter, en formato HTML, ya sea construido por nosotros mismos, o copiando alguna de las innumerables plantillas gratuitas que podremos encontrar en internet.

          Si optamos por la segunda opción, o sea, la de utilizar una plantilla gratuita y personalizarla con nuestros contenidos, los pasos a seguir son bastante simples:

     1.- Buscaremos en Google la plataforma que nos ofrezca plantillas HTML para correos electrónicos, algunas de ellas incluyen un editor que nos permitirá arrastrar los elementos y luego exportarla, algunas sugerencias son: 
https://unlayer.com/templates
 
https://stripo.email

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     2.- Crearemos o abriremos nuestro contenido creado usando el tipo Newsletter Issue, cambiaremos el formato del body a HTML completo o Full HTML , y dependiendo de la web que hayamos seleccionado y la plantilla, pegaremos directamente lo copiado o cambiaremos a Fuente HTML, haciendo clic en la barra superior del editor y pegaremos el código en formato HTML antes de guardarlo.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     3.- Una vez guardados los cambios, podremos seleccionar la pestaña Boletín o Newsletter de nuestro contenido para que se nos abra la pantalla de envío de la Newsletter.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Newsletter Drupal 9 (Parte 1)

Video de Youtube
URL de Video remoto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

      Cómo profesionales o entusiastas del desarrollo web, debemos estar en constante aprendizaje, para poder ofrecer siempre las mejores opciones disponibles en cada nuevo proyecto.

     Ya sabemos lo rápido que evoluciona todo lo relacionado con el mundo de las aplicaciones y las páginas web, pero en algunos casos, todavía existen recursos disponibles que nunca pasan de moda, ya que juegan un papel muy importante, con relación a la comunicación e interacción que buscan todas las empresas, cuando se trata de potenciales clientes, seguidores o suscriptores de algún servicio.

     Me refiero al uso del Boletín o "Newsletter", que suele ser utilizado por toda clase de plataformas, ya sea para informar a los alumnos de los cursos en una academia en línea o para compartir las últimas novedades de una tienda especializada, entre todos los clientes frecuentes o interesados.

     Una vez más, podemos contar con un para de módulos que nos permitirán crear una Newsletter, en Drupal 8 o 9, sin demasiadas complicaciones y cuyo impacto en el contenido que estemos dispuestos a compartir, dependerá del objetivo y empeño que pongamos en su creación y edición.

     Cómo crear una Newsletter con Simplenews y Mime Mail en Drupal 9

     Requisitos

  1.   Tener instalado una web de Drupal 8 o 9 funcionando, preferiblemente en un entorno local o de desarrollo para realizar todas las pruebas antes de ponerla en producción. Si quieres, puedes usar el ddev, como he hecho, Haz clic aquí
     
  2.   Instalar los módulos que vamos a necesitar:
     Simplenews

    Swift Mailer
     
     
    Mail System


    Recuerda que está recomendado utilizar Composer a partir de Drupal 8, para facilitar la descarga de los módulos y sus dependencias, en el caso de que no puedas descargar usando Composer alguno de los módulos, podrás hacerlo de la manera tradicional, descargando el archivo .zip, desde la página oficial y una ve descomprimido, colocarlo dentro de la carpeta "modules/contrib" . 

     Paso 1 - Descarga y activación de los módulos

          Lo primero que tendremos que hacer, una vez descargados los módulos mencionados anteriormente, es activarlos para, a continuación acceder a las páginas de configuración correspondientes en cada caso y realizar algunos ajustes, puedes activarlos usando la interfaz de usuario, en la url '/admin/modules' o si, si utilizas drush, con el comando drush en MODULO - y.

         Ajustes Módulo Swift Mailer: El primer cambio que vamos a realizar será en la configuración del módulo Swift Mailer, url "/admin/config/swiftmailer/transport", que nos permitirá enviar correos electrónicos con formato HTML. En la pestaña Transport, nos aseguraremos de que esté seleccionado sendmail como mecanismo para enviar los correos electrónicos.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Dejaremos todo tal y como está en la pestaña MENSAJES y nos moveremos a la última pestaña PRUEBA, donde podremos realizar una prueba de envío, sin embargo, antes de poder enviar un correo de prueba tendremos que realizar otro cambio en el módulo en el módulo MailSystem:  

        Ajustes Módulo Mail System: Este es el módulo que ayuda al Mime Mail para poder enviar los correos y que mantenga los formatos adecuados, para que al recibirlos en nuestra bandeja de entrada conserven el diseño correspondiente. Para realizar los cambios iremos a la url " /admin/config/system/mailsystem", seleccionaremos el Mime Mail en el Formateador y Remitente, y el Tema actual para el renderizado de los mensajes.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez realizado estos cambios en el Módulo Mail System, podremos volver a la pestaña de PRUEBA, del módulo Switfmailer y si damos al botón enviar mensaje de prueba, veremos que el mensaje se ha enviado correctamente a la cuenta de correo REAL, que hemos puesto.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si haz optado por utilizar DDEV, como he hecho para este ejemplo, podrás ver la dirección de correo LOCAL, con su respectiva bandeja de entrada, escribiendo en la consola el comando:

ddev describe

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ajustes Módulo Simplenews: Este será el encargado de todo lo relacionado con nuestro boletín, los suscriptores, el bloque de suscripción, etc. 

     Recuerda que es posible que no te deje descargarlo usando Composer, pero podrás hacerlo de la manera tradicional, usando el archivo .ZIP

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Ajustes de la Newsletter por defecto: Tendremos que cambiar la configuración de todo el módulo, pero también de la Newsletter que nos viene como modelo. Primero cambiaremos esta última, accediendo a la url "/admin/config/services/simplenews", y luego haremos clic en el botón editar para asegurarnos de dejar el formato HTML y la prioridad en ninguno, ya que la mayoría de los proveedores de correo ignoran este valor.

          Una vez realizados los cambios, guardamos y cerramos para continuar con los demás cambios de configuración.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Ajustes generales de la Newsletter: Ahora vamos a realizar los cambios en la configuración general del módulo Newsletter, para ello seleccionaremos la pestaña Configuración en la misma url , y luego haremos clic en la primera pestaña de la izquierda, para realizar las modificaciones.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Páginas de confirmación de Alta y Baja: Otro de los cambios necesarios antes de poner en funcionamiento nuestro boletín "Newsletter", será la creación de las páginas de confirmación a las que se redirige al usuario cuando se inscribe o da de baja del listado de suscriptores, de no hacerlo, el módulo podría dar un error en cuanto comiences a realizar las pruebas.

     Para esto, podremos crear dos páginas simples, con sus respectivas urls y una vez creadas, las añadiremos en la parte inferior de la pestaña Suscripción, tal y como muestro en la siguiente imagen:

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Cantidad de envíos: Los envíos de los boletines o "Newsletters", se realizarán periódicamente, cada vez que se realice la ejecución del CRON de Drupal, deberás ser conciente de que algunos proveedores de hosting, tienen limitada la cantidad de envío de correos.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

    Por defecto el CRON realiza varias tareas automatizadas en Drupal, cada 3 horas, pero podremos cambiar su tiempo de ejecución en la url "/admin/config/system/cron", aunque dependiendo del tamaño de la web, no está recomendado realizar cambios de este tipo, ya que las comprobaciones provocarán relentización de la web y posibles fallos que repercutirán en los usuarios que estén conectados en ese momento.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Activación del bloque para suscriptores: Ahora que ya tenemos nuestro newsletter casi listo para comenzar a enviar mensajes a nuestros usuarios, tendremos que darles la oportunidad de suscribirse. Para ello, activaremos el bloque de suscripción que podremos encontrar dentro del listado de bloques, en la url "/admin/structure/block".

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez guardados los cambios, podremos ir a nuestra página principal, o dónde hayas decidido que aparezca tu bloque para suscribirse, y verás un formulario con botón listo para que tus usuarios puedan mantenerse al día con tus publicaciones.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Gestión de suscriptores: Ahora ya podremos comenzar a publicar y compartir con nuestros usuarios suscriptores los contenidos que vayamos publicando periódicamente y para los que se han suscrito.

     Para gestionarlos, iremos a la url "/admin/people/simplenews", y desde aquí podrás realizar toda clase de operaciones con los usuarios que quieras añadir a tu lista como suscriptores o que se hayas suscrito por su propia voluntad.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Aunque todavía no hemos creado nuestra primera Newsletter, necesitaremos al menos un usuario suscrito para realizar nuestras pruebas, así que añadiremos uno dándole al botón add suscriber, pondremos una dirección de correo válida (Puedes usar la misma con la que testeaste Swiftmailer al principio), y luego marcar el o las newsletter que le interesa recibir.

Newsletter Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony