首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斯巴达克斯

斯巴达克斯
EN

Stack Overflow用户
提问于 2022-02-23 15:29:57
回答 1查看 306关注 0票数 0

使用Spartacus,我能够更改PDP调用,以获得一个额外的参数,即存储代码及其工作正常。但是,当我将产品添加到购物车时,api调用会失败,因为存储代码没有被传递。

首先,我扩展了active-cart和multi服务,以接受我的额外参数,并且我正在与未公开的函数中使用的私有变量之一进行斗争。

我是在正确的路径上,还是有一种更简单的方法来向这个调用添加一个参数?拦截器能起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-23 20:07:00

如果您使用的是Spartacus4.1.x,那么这是一个简单的方法。

1-创建一个提供存储代码的服务(也许您已经拥有它了)

2-重写Occ addEntries端点的原始配置以使用您的附加参数(例如,addEntries: 'users/${userId}/carts/${cartId}/entries?storeCode=${storeCode}' )

3-从Spartacus扩展OccCartEntryAdapter,在构造函数中插入步骤1中的服务,并重写add方法;方法主体将与原始Spartacus代码几乎相等,附加的是您将从服务注入的storeCode,并将其添加到buildUrl调用中:

代码语言:javascript
复制
this.occEndpointsService.buildUrl('addEntries', {
  urlParams: { userId, cartId, storeCode: STORE_CODE },
});

请注意,如果您定义了要在正文中发送的值,则会有细微的差别。它不在urlParams上,而是在主体中(变量toAdd),如下所示:

1-创建一个提供存储代码的服务(也许您已经拥有它了)

2-从Spartacus扩展OccCartEntryAdapter,在构造函数中插入步骤1中的服务,并重写add方法;方法主体将与原始Spartacus代码几乎相等,附加的是您将从服务注入的storeCode,并将其添加到主体:

代码语言:javascript
复制
const toAdd = {
  quantity,
  product: { code: productCode },
  storeCode: STORE_CODE
};

更新的:如果您使用的是Spartacus2.1.x,请使用查询参数:

1-创建一个提供存储代码的服务(也许您已经拥有它了)

2-将OccCartEntryAdapterSpartacus 2.1.8中扩展,将服务从步骤1注入构造函数中,并覆盖add方法;方法主体将与原始Spartacus代码几乎相等,并附加如下:您将从服务注入获得storeCode,并将其添加到getUrl调用中:

代码语言:javascript
复制
this.occEndpointsService.getUrl('addEntries', {
  'addEntries',
  {
    userId,
    cartId,
  },
  { code: productCode, qty: quantity, storeCode: STORE_CODE }
);

请让我知道。谢谢!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71239787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档