drupal 8 – Asignar (agregar) una referencia de entidad cuando se completa un proceso de pedido

Pregunta:

En Drupal 8, necesito saber cómo asignar / agregar una referencia de entidad de un libro electrónico a un campo de referencia de entidad multivalor del usuario cuando se realiza un pedido con el libro electrónico. Esto permitirá al usuario acceder solo a los libros electrónicos adjuntos a su cuenta de usuario.

¿Qué gancho utilizo? ¿Cómo puedo saber si hay un producto en el pedido que tiene field_ebook = true? Entonces, ¿cómo agregarlo a la lista de referencias de entidades?

Respuesta:

No es un gancho sino un evento.

Los pedidos tienen un flujo de trabajo adjunto. Puede escuchar el evento de que se realiza un pedido, consulte el módulo state_machine para obtener documentación al respecto. Básicamente, debe definir un servicio de suscripción de eventos, suscribirse al evento commerce_order.place.post_transition , luego verificar si el pedido es un libro electrónico y, de ser así, actuar en función del ID de cliente del pedido.

El método de suscriptor necesita así:

public function orderStateChange(WorkflowTransitionEvent $transition_event) {
  $entity = $transition_event->getEntity();
  // Check the transition id and whetever else you need on the order and then do your thing.
  if ($transition_event->getToState()->getId() == 'completed' && ...) {

  }
}

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım