【问题标题】:List Item, customer NopCommerce列表项,客户 NopCommerce
【发布时间】:2020-02-21 14:34:23
【问题描述】:

如何使用非常简单的代码获取购物车中的商品列表? (我需要它在控制器,插件中) 它应该在 4.20 Nopcommerce 版本中

如果客户已登录,还可以获得客户信息? 如果客户未登录,请在下订单时创建一个新帐户。

【问题讨论】:

    标签: plugins nopcommerce


    【解决方案1】:

    您可以使用 ShoppingCartService 获取用户购物车的商品:

    var cart = _shoppingCartService.GetShoppingCart(_workContext.CurrentCustomer, ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id);
    

    请考虑您必须将这些接口注入您的控制器:IShoppingCartService, IWorkContext, IStoreContext

    【讨论】:

    • 嗨,我进行了测试,它有效,我为每个循环获取了所有项目
    【解决方案2】:
    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");
        }
    

    【讨论】:

      【解决方案3】:
      1. 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;
          }
      }
      

      【讨论】:

      • 我会试试这个,我也会更新客户地址,当客户选择发票时,我们只会送货到时装设计师的居住地址。下单时为什么要更改地址有一些简单的原因吗?
      猜你喜欢
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多