展示如何在checkout里使用quote,quoteitem,address,shoppingcart

编程


Quote item
Quote items 包含访客购物车的内容。他们把quote和产品关联起来。这些items被存储在quote_item.这个表是存储item额外信息的好地方。
quote item的代表模块是 vendor/magento/module-quote/Model/Quote/Item.php

Address 
每个quote都会有至少一个账单地址和送货地址(除非quote只包括虚拟产品)。quote address的代表模块是 vendorMagentoQuoteModelQuoteAddress.php。quote address 还会保存这个地址相关联的 item.


Shopping cart rules
购物车规则应用促销到购物车的项(item)。MagentoSalesRule模块处理这个逻辑。

描述怎么样定制化将产品加入购物车的流程。哪些不同的场景你需要考虑在内。
将产品加入Magento2购物车有几种方式:
.前台
.后台
.心愿单
.重购
.quotes合并(访客购物车里有产品,登陆,当前的quote会被merge到登陆账户的quote)
.REST API
如果加入购物车需要定制化,应该在公用方法上添加plugin(插件),而不要只是在某个controller上添加hooker,这一点很重要。

8.2展示使用TOTALS MODELS的能力
展示如何更改购物车价格计算流程。如何添加一个定制化totals model或者更改一个已存在的total是model.
要下添加一个定制化total model,你需要在 etc/sales.xml把它添加进去并且创建一个model来处理计算流程。
vendormagentomodule-taxetcsales.xml提供了这种管理的例子:
<confgxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_
Sales:etc/sales.xsd">
    <sectionname="quote">
        <groupname="totals">
            <itemname="tax"instance="MagentoTaxModel
SalesTotalQuoteTax"sort_order="450">
<renderername="adminhtml"
instance="MagentoSalesBlockAdminhtmlOrderCreate
TotalsTax"/>
                 <renderername="frontend"
instance="MagentoTaxBlockCheckoutTax"/>
             </item>
        </group>
    </section>
</confg>
每个total model都继承MagentoQuoteModelQuoteAddressTotalAbstractTotal

8.3  展示定制购物车的能力
描述如何实现购物车规则
要点:
.常用的把一个产品加入购物车的唯一方法是 MagentoSalesModelQuote::addItem.
.一次只能使用一个跟coupon code相关联的购物车规则。一次可以使用多个购物车规则可以。
购物车规则主要是在管理员面板里面创建(还有一种方法是在Setup/UpgradeData.php里使用代码添加。)具体位置是 Marketing > Cart Price Rules

sales rules(销售规则)和catelog rules(目录规则)之间的不同
销售规则应用于购物车里面的产品。目录规则应用在添加到购物车之前的产品。
因为被添加到里购物车,销售规则可以为定制化提供更多的选项,因为他们可以提供例如针对购物车的免邮,折扣和优惠券。

销售规则是如何影响性能的?原生销售规则引擎有哪些限制?
购物车和创建订单时的销售规则会使性能变差,因为处理规则可能是一项很重大的任务(特别是如果包含复杂的过滤条件)。越是全局性的规则,越是多的规则被应用,性能会越慢,越是不需要使用优惠券。
约束:一次只能使用一个优惠券。你不能使购物车里面有一个产品正常售卖而对另外一个产品免费或者打折。购物车规则不能往购物车里面添加产品,他只能应用于符合条件的产品。

描述不同的场景下添加到购物车逻辑。从产品页面,心愿单,重新购买,quotes合并加入购物车有什么不同?
产品页面:vendor/magento/module-checkout/Controller/Cart/Add.php
触发事件:
.checkout_cart_add_product_complete
.checkout_cart_product_add_after(在购物车实体,应用于前端,后端,REST)
.sales_quote_product_add_after(在quote实体)
.sales_quote_add_item(在quote实体)
购买请求会根据请求数量和其它产品信息创建。这些信息会被传到cart model里,在quote model里生产添加项的时候会被用到。
心愿单页:vendor/magento/module-wishlist/Controller/Index/Cart.p
.checkout_cart_product_add_after(购物车实体,应用于前端,后端,REST)
.sales_quote_product_add_after(quote实体)
.sales_quote_add_item(quote实体)
buy request会再次检查信息是否正确,然后心愿单会被告知将自己添加到购物车。该操作会在上面提到的controller path里调用addProduct方法

Reorder : vendor/magento/module-sales/Controller/AbstractController/Reorder.php
触发事件:
.checkout_cart_product_add_after(在购物车实体,应用于前台,后台,REST)
.sales_quote_product_add_after(quote实体)
.sales_quote_add_item(quote实体)
reorder controller 调用购物车的addOrderItem方法。该操作会加载buy request并且调用购物车的addProduct方法。

Merge: vendor/magento/module-quote/Model/Quote.php::merge
触发事件:
.sales_quote_add_item(quote 实体)



 

以上是 展示如何在checkout里使用quote,quoteitem,address,shoppingcart 的全部内容, 来源链接: utcz.com/z/515188.html

回到顶部