斯巴达克斯加入购物车
Spartacus add to cart
使用 Spartacus,我已经能够更改 PDP 调用以获取一个额外的参数,即商店代码及其工作正常。但是,当我将产品添加到购物车时,api 调用失败,因为未传递商店代码。
我已经开始扩展 active-cart 和 multi-cart 服务以获取我的额外参数,但我正在努力处理未公开的函数中使用的私有变量之一。
我走的路是否正确,或者是否有更简单的方法向此调用添加参数?拦截器会起作用吗?
如果您使用 Spartacus 4,这对您来说是简单的方法。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
};
已更新:如果您使用的是 Spartacus 2.1.x,请使用 URL 查询参数:
1 - 创建将提供商店代码的服务(也许您已经有了)
2 - 从 Spartacus 2.1.8 扩展 OccCartEntryAdapter
,在构造函数中注入第 1 步的服务,并覆盖 add
方法;方法主体将几乎与原始 Spartacus 代码相同,另外您将从注入的服务中获得 storeCode
,并将其添加到 getUrl
调用:
this.occEndpointsService.getUrl('addEntries', {
'addEntries',
{
userId,
cartId,
},
{ code: productCode, qty: quantity, storeCode: STORE_CODE }
);
请告诉我。谢谢!
使用 Spartacus,我已经能够更改 PDP 调用以获取一个额外的参数,即商店代码及其工作正常。但是,当我将产品添加到购物车时,api 调用失败,因为未传递商店代码。
我已经开始扩展 active-cart 和 multi-cart 服务以获取我的额外参数,但我正在努力处理未公开的函数中使用的私有变量之一。
我走的路是否正确,或者是否有更简单的方法向此调用添加参数?拦截器会起作用吗?
如果您使用 Spartacus 4,这对您来说是简单的方法。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
};
已更新:如果您使用的是 Spartacus 2.1.x,请使用 URL 查询参数:
1 - 创建将提供商店代码的服务(也许您已经有了)
2 - 从 Spartacus 2.1.8 扩展 OccCartEntryAdapter
,在构造函数中注入第 1 步的服务,并覆盖 add
方法;方法主体将几乎与原始 Spartacus 代码相同,另外您将从注入的服务中获得 storeCode
,并将其添加到 getUrl
调用:
this.occEndpointsService.getUrl('addEntries', {
'addEntries',
{
userId,
cartId,
},
{ code: productCode, qty: quantity, storeCode: STORE_CODE }
);
请告诉我。谢谢!