Crear un comentario programando en Drupal 8

Crear un comentario en Drupal 8 puede parecer complicado dada la nueva estructura y manera de programar en Drupal 8. Pero es una tarea realmente sencilla. En Drupal 8 los comentarios son ahora entidades completas y ya no están limitados unicamente a los nodos, son independientes, lo cual hace los nuevos comentarios de Drupal 8 mucho mas flexibles.

Para crear un nuevo comentario, tenemos que crear una entidad de tipo comentario pasarle unos parametros, y guardarla, en este ejemplo vamos a rellenar unicamente los campos requeridos.

//Para crear una nueva entidad de comentario, debemos utilizar la clase “Comment”.

use Drupal\comment\Entity\Comment;

//El nombre de la funcion no importa, le pondremos que el queramos para luego llamarla.

function nombre_que_queramos() {

$body = “Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam nec enim et massa venenatis posuere at id ante. Ut feugiat ultricies accumsan. Sed nec tincidunt tortor.”;

//Primero creamos un array con los valores necesarios.

$values = [

// Estos valores sin para especificar la entidad en la cual vamos a crear el comentario.

'entity_type' => 'node', // requerido.

'entity_id' => 42, // requerido.

'field_name' => 'comment', // requerido.

// El Id del usuario que crea el comentario, 0 para el anonimo.

'uid' => 0, // requerido.

// Estos campos son para el comentario.

'comment_type' => 'comment', // requerido.

'subject' => 'Mi super comentario', // requerido.

'comment_body' => $body, // opcional.

// Indica si el comentario esta aprovado o no.

'status' => 1, // opcional. Por defecto es cero 0.

];

// Aqui creamos la entidad pasandole los valores que hemos definido arriba.

$comment = Comment::create($values);

// Almacenamos la entidad en la base de datos.

$comment->save();

}

A continuacion vamos a explicar cada valor que definimos.

  • entity_type: El tipo de entidad al que vamos a adjuntar el comentario, si estamos creando un comentario para un nodo, debemos especificar “node”.
  • entity_id: La id de la entidad a la que vamos a adjuntar el comentarios.
  • field_name: El nombre que tiene el campos de la entidad de destino al cual se adjuntara el comentario. Esto es algo nuevo en Drupal 8, puedes tener diferentes tipos de comentarios en la misma entidad o en el mismo tipo de entidad (tipo de contenido para los nodos). Hay que colocar el “machine name” del campo de destino.

Despues el campo uid, en el cual indicamos la id del usuario.

Los campos restantes son los siguientes:

  • comment_type: El tipo de comentario que vamos a crear, este campo es como si especificaramos el tipo de contenido de un nodo, es necesario ya que ahora podemos tener diferentes tipos de comentarios en Drupal 8.
  • subject: El asunto del comentario.
  • comment_body: El campo que por defecto almacena el texto del comentario.
  • status: El estado del comentario, 1 aprovado, 0 no aprovado. El valor por defecto es 0.

Y listo, con esto tenemos ya un comentario creado programandolo, es algo muy sencillo de hacer.