Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

132
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda