使用附加数据扩展 Spartacus NGRX 存储

时间:2020-12-23 16:49:38

标签: spartacus-storefront

对于我们的 Spartacus 项目,我们需要在 checkout 中引入额外的 Data 属性: 我们有这样一种情况,即用户需要为每个产品选择一种交付方式。

在理想情况下,选择后,所选的交付模式将保存在 NGRX 商店和后端中,以符合此处定义的数据绑定原则:https://sap.github.io/spartacus-docs/connecting-to-other-systems/#component-data-binding

预期数据/用户流:

  1. 用户转到结帐和交付模式步骤
  2. 自定义 OCC 调用是为了加载每个产品支持的交付模式(取决于产品类型和进一步的客户特定逻辑)
  3. 显示购物车项目,并通过包含可用交付模式的下拉菜单进行增强
  4. 用户选择交付方式
  5. 选择的交付模式存储在 NGRX 商店内的购物车条目中并保存在后端
  6. 新的购物车总计是根据所选交付方式的成本计算的
  7. 新的购物车总数存储在 NGRX 商店内的购物车中并保存在后端
  8. 用户点击继续进入查看订单步骤
  9. 购物车商品与之前选择的交付方式一起列出

在对现有代码进行一些分析后,我们在 deliveryMode 上发现了一个属性 orderEntry。这似乎没有在斯巴达克斯的任何地方使用,但可以通过遵循此 stackoverflow answerthis one 来使第 9 步工作。

有关此流程的问题:

  • 我们如何扩展 NGRX 商店?我们假设,可以只扩展外观(活动购物车服务),绕过商店并将信息保存在后端(Described here),然后从后端刷新商店。这个假设正确吗?如果是,那感觉很尴尬,因为我们需要重新加载整个存储区,以便在 deliveryMode
  • 上包含新属性 orderEntry
  • 我们如何挂钩购物车总计的价格计算,以根据所选的交付方式更新总计?再说一次,我们如何将新的总金额带入商店?

Slack 频道中似乎有几个答案,但围绕扩展 ngrx 存储的可用答案却很少,尽管对我们来说,这似乎是一项非常正常的任务.. :-/

任何想法、意见或支持将不胜感激。 :-)

2 个答案:

答案 0 :(得分:0)

这似乎很难完成,因为斯巴达克斯不支持每种产品的交付模式。但有些想法:

  • 您可以扩展 CartEntry 核心类(适配器、连接器、外观等)以包含添加到购物车的条目的交付模式。您可能需要更改所有内容以包括交付模式设置。所有这些都是公开的,因此您可以根据需要修改它们,包括商店。

  • 使用多个购物车,每个购物车有一个产品,并以这种方式设置交付模式。但这在我看来会很麻烦。

就价格计算而言,我假设 OCC 调用返回总价格。对购物车条目的调用是否包括每次条目的交付方式成本?

答案 1 :(得分:0)

我们已经实施了以下解决方案,并且目前有效:

  1. 在后端增强购物车模型
  2. 添加新端点以加载每个产品的可用交付模式(绕过 NGRX 商店)
  3. 添加新端点以保存选定的交付模式(绕过 NGRX 商店)
  4. 在保存端点后,会触发购物车重新加载,它将在订单条目(通过类型扩充)上具有自定义属性的新购物车总数从后端加载到商店中
相关问题