使用Spartacus,我能够更改PDP调用,以获得一个额外的参数,即存储代码及其工作正常。但是,当我将产品添加到购物车时,api调用会失败,因为存储代码没有被传递。
首先,我扩展了active-cart和multi服务,以接受我的额外参数,并且我正在与未公开的函数中使用的私有变量之一进行斗争。
我是在正确的路径上,还是有一种更简单的方法来向这个调用添加一个参数?拦截器能起作用吗?
发布于 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调用中:
this.occEndpointsService.buildUrl('addEntries', {
urlParams: { userId, cartId, storeCode: STORE_CODE },
});请注意,如果您定义了要在正文中发送的值,则会有细微的差别。它不在urlParams上,而是在主体中(变量toAdd),如下所示:
1-创建一个提供存储代码的服务(也许您已经拥有它了)
2-从Spartacus扩展OccCartEntryAdapter,在构造函数中插入步骤1中的服务,并重写add方法;方法主体将与原始Spartacus代码几乎相等,附加的是您将从服务注入的storeCode,并将其添加到主体:
const toAdd = {
quantity,
product: { code: productCode },
storeCode: STORE_CODE
};更新的:如果您使用的是Spartacus2.1.x,请使用查询参数:
1-创建一个提供存储代码的服务(也许您已经拥有它了)
2-将OccCartEntryAdapter从Spartacus 2.1.8中扩展,将服务从步骤1注入构造函数中,并覆盖add方法;方法主体将与原始Spartacus代码几乎相等,并附加如下:您将从服务注入获得storeCode,并将其添加到getUrl调用中:
this.occEndpointsService.getUrl('addEntries', {
'addEntries',
{
userId,
cartId,
},
{ code: productCode, qty: quantity, storeCode: STORE_CODE }
);请让我知道。谢谢!
https://stackoverflow.com/questions/71239787
复制相似问题