Mostrar un extension attribute en el api de Magento 2

, ,
extension attribute

Cuando añadimos un extension attribute a un modelo de Magento, por defecto no se muestra su valor en las peticiones api/rest que hagamos. Para ello, debemos escribir un código que capture el evento load_after e incluya los extension attributes.

Vamos a tomar como ejemplo un campo ‘custom_field’ que hemos añadido a la tabla de pedidos y que rellenamos en un evento cuando se cree un pedido.

Lo primero es definir este campo como un extension_attribute. Para ello insertamos este código en el fichero ‘etc/extension_attributes.xml’:

Ahora lo que necesitamos es crear un evento que añada los extension attributes al modelo cuando se cargue. Para ello añadimos este código al fichero ‘etc/events.xml’:

Y creamos el observer que gestionará el evento:

Para que esto funcione, la carpeta /var/generation ha de ser eliminada (o la carpeta generated/code, si usamos una de las últimas versiones de Magento 2), y vaciamos la cache desde consola con el siguiente comando:

/php bin/magento cache:flush

Si hemos seguido todos los pasos, podremos obtener nuestro atributo dentro del nodo  “extension_attributes” de la respuesta que obtenemos a través del api. De todas formas, si necesitas una ayuda no dudes en contactar con nosotros.