【发布时间】:2020-02-21 14:34:23
【问题描述】:
如何使用非常简单的代码获取购物车中的商品列表? (我需要它在控制器,插件中) 它应该在 4.20 Nopcommerce 版本中
如果客户已登录,还可以获得客户信息? 如果客户未登录,请在下订单时创建一个新帐户。
【问题讨论】:
标签: plugins nopcommerce
如何使用非常简单的代码获取购物车中的商品列表? (我需要它在控制器,插件中) 它应该在 4.20 Nopcommerce 版本中
如果客户已登录,还可以获得客户信息? 如果客户未登录,请在下订单时创建一个新帐户。
【问题讨论】:
标签: plugins nopcommerce
您可以使用 ShoppingCartService 获取用户购物车的商品:
var cart = _shoppingCartService.GetShoppingCart(_workContext.CurrentCustomer, ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id);
请考虑您必须将这些接口注入您的控制器:IShoppingCartService, IWorkContext, IStoreContext
【讨论】:
public class TestStandardController : BasePluginController
{
#region Fields
private readonly IShoppingCartService _shoppingCartService;
private readonly IWorkContext _workContext;
private readonly IStoreContext _storeContext;
#endregion
#region Ctor
public TestStandardController(
IShoppingCartService shoppingCartService,
IWorkContext workContext,
IStoreContext storeContext
)
{
_shoppingCartService = shoppingCartService;
_workContext = workContext;
_storeContext = storeContext;
}
#endregion
#region Methods
public IActionResult Index()
var cart =
_shoppingCartService.GetShoppingCart(_workContext.CurrentCustomer,
ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id);
return View("~/Plugins/Payments.test/Views/getps.cshtml");
}
【讨论】:
IWorkContext接口有一个名为CurrentCustomer的属性。WebWorkContext类实现接口并设置客户信息。 CurrentCustomer 属性包含有关客户及其购物车商品的信息。要使用此属性,您需要在构造函数中注入 IWorkContext 接口,因为 NopCommerce 使用基于构造函数的依赖注入。
public class PluginController: BasePluginController
{
private readonly IWorkContext _workContext;
public PluginController(IWorkContext workContext)
{
_workContext=workContext;
}
private IActionResult GetCustomerAndShoppingCartItems()
{
var currentCustomer= _workContext.CurrentCustomer;
var shoppingCartItems= currentCustomer.ShoppingCartItems;
}
}
【讨论】: