在 Hybris Commerce 上的 AbstractOrder 中添加自定义值 - AddtoCartFunction

Add a Custom Value in AbstractOrder on Hybris Commerce - AddtoCartFunction

我正在尝试为 Hybris Commerce b2c 中的 addtocart 函数添加自定义值。是带有复选框的布尔值。

我已经在 core-items.xml 中添加了 bol 自定义值,但现在我需要在选中复选框时获取该值,然后再按下 addToCart 按钮,然后在结帐页面中显示该值。

我认为这不是一项短任务,但我只想了解此类流程的数据流,这是复杂的部分。

如果有人有时间解释一下,那将不胜感激!谢谢 !

<form:form method="post" id="addToCartForm" class="add_to_cart_form" action="${addToCartUrl}">
<div>
    <div class="custom-control custom-checkbox">
        <input path="trasiego" onclick="ACC.productDetail.enableMinusBtn()" type="checkbox" class="custom-control-input" id="trasiego">
        <form:checkbox path="trasiego" value="true"/>
    <spring:theme code="product.pdp.pedidoTrasiego"/>
    </div>
</div>
<input type="hidden" maxlength="3" size="1" id="qty" name="qty" class="qty js-qty-selector-input" value="1">
<input class = "js-simulate-validate-link" type="hidden" name="productCodePost" value="${fn:escapeXml(product.code)}"/>
        <ycommerce:testId code="simulateButton">
                    <button id="simulateButton" type="button" data-error-simulate-url="${fn:escapeXml(simulatePopup)}" data-simulate-title="<spring:theme code="text.simulate"/>" class="btn btn-default  btn-block js-add-to-cart" disabled=disabled">
                        <spring:theme code="basket.simulate"/>
                    </button>
        </ycommerce:testId>
        <ycommerce:testId code="addToCartButton">
            <button id="addToCartButton" type="submit" class="btn btn-primary btn-block" disabled=disabled>
                <spring:theme code="basket.buy"/>
            </button>
            <br>
        </ycommerce:testId>
</form:form>

如果您觉得有帮助,请点下面的几点,

I've add the bol custom value in core-items.xml......

当我读到上面的声明时有点困惑,因此想指出接触 OOB 扩展代码库是违反标准做法的。相反,您应该在项目 $extension-items.xml

中生成自定义扩展和 extend/update 项

I need to get that value when the checkbox is selected before press the addToCart Button and then show that value in the checkout page.

您可以通过以下步骤实现它:

步骤1-在你的项目扩展$extension-items.xml中,添加一个新的布尔属性到抽象顺序

<itemtype code="AbstractOrder" autocreate="false" generate="false" >
         <attributes>
                <attribute qualifier="code" type="java.lang.Boolean">
                        <persistence type="property" />
                </attribute>
         </attribute>
</itemtype>

步骤 2 -运行ant clean all

第 3 步 - 在您的项目店面扩展中,在 Jsp/Tag 文件中添加一个复选框

Step 4 -如果要在这个checkbox的select/deselect上持久化这个值的选择,可以在相应的JS文件中写一个onClick()事件. 在你的情况下你可以使用 /$storefornt-extension/web/webroot/WEB-INF/_ui-src/responsive/lib/ybase-0.1.0/js/acc.cart.js

步骤 5 - 在 Controller (MVC) 中创建相应的处理程序。您可以根据需要使用 AddToCartController.java 或 CartPageController

Step 6 -在对应的facade --> service中,将新字段值保存到model

步骤 7 -AbstractOrderPopulatorCartPopulator 中,映射您的新字段以填充它从项目模型返回到 CartData。也可以用在下一页查看。

有了这个,您的字段值将被持久化并获取以在各个 hybris 层之间传输,您可以使用相应的数据对象。

希望对您有所帮助。