Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

128
Vistas
extendiendo cartStoreService en shopware 6

Tengo una duda bastante técnica sobre las posibilidades de ampliación de los servicios existentes:

En particular, necesito cambiar la funcionalidad de un método en el servicio cart-store-api.api.service.js . La llamada a la API también debe transmitir el campo item.payload para permitir pasar la carga útil personalizada al crear elementos de línea en el administrador:

 getPayloadForItem(item, salesChannelId, isNewProductItem, id) { let dummyPrice = null; if (this.shouldPriceUpdated(item, isNewProductItem)) { dummyPrice = deepCopyObject(item.priceDefinition); dummyPrice.taxRules = item.priceDefinition.taxRules; dummyPrice.quantity = item.quantity; dummyPrice.type = this.mapLineItemTypeToPriceType(item.type); } return { items: [ { id: id, referencedId: id, label: item.label, quantity: item.quantity, type: item.type, description: item.description, priceDefinition: dummyPrice, stackable: true, removable: true, salesChannelId, // this is what I want to add payload: item.payload }, ], }; }

Encontré esta guía que explica cómo se pueden decorar los servicios, SIN EMBARGO, no logré extender el servicio cartStoreApi porque no parece tener un 'nombre técnico' (encontré estos globales.types.ts donde a muchos servicios se les asigna una clave - como 'acl' para aclService). Entonces mi problema es que no puedo decorar cartStoreService porque no conozco su identificador de referencia.

De aquí surgen dos preguntas:

  1. ¿Son correctas mis observaciones? ¿O hay alguna forma de decorar el carritoStoreApi?
  2. Si esto no es posible, ¿cuál es la forma sugerida de resolver mi problema?

¡muchas gracias!

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

Hay bastante diferencia entre ampliar y decorar un servicio. Si se adapta a sus necesidades, puede usar el servicio simplemente extendiéndolo, como CartStoreService extiende ApiService . Luego puede usarlo como su servicio personalizado en su complemento. Si realmente desea decorarlo, lo que significa que modificará cada llamada al servicio desde cualquier lugar, tal vez solo intente acceder a él en el contenedor de servicios como se indica en los documentos, no estoy seguro de que globals.types.ts esté completo .

about 4 years ago · Santiago Gelvez Denunciar

0

Ok, logré resolver mi problema. Así es como se ve la solución:

 Shopware.Application.addServiceProviderDecorator( "cartStoreService", (service) => { const decoratedMethod = service.getPayloadForItem; service.getPayloadForItem = function (item, salesChannelId, isNewProductItem, id) { const returnValue = decoratedMethod.call(service, item, salesChannelId, isNewProductItem, id) returnValue.items[0]['payload'] = item.payload // <-- reason for this whole decoration: pass custom payload to API return returnValue }; return service; } );
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda