javascript Odoo8网站将输入值从产品页面转移到购物车页面

3htmauhk  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(94)

我在odoov 8的项目工作。我需要在产品页面上添加一个字段,然后创建一个订单,其中包括这个字段。
更具体地说,我已经在产品页面上添加了开始日期字段,我可以在上面选择一个日期,但当我点击“添加到购物车”,我去购物车页面,产品没有我选择的日期。我需要数量字段具有类似的功能。
下面是我用来在产品页面上显示日期字段的代码:

<template id="product_quantity" inherit_id="website_sale.product">
            <xpath expr="//a[@id='add_to_cart']" position="after">
                <p>
                    <group colspan="2" col="2">
                        <label for="date">Rent Start Date
                            <input type="date" string="Rent Start Date"  class="form-control" name="start_date" id="start_date"  data-oe-model="ir.ui.view" data-oe-field="arch"  />
                        
                        </label>
                    </group>
                </p>
            </xpath>
    </template>

下面是它的外观:

此外,我对用当前日期初始化此字段的方法很感兴趣。
任何帮助我都感激不尽。谢谢!

y3bcpkx1

y3bcpkx11#

您需要扩展模型sale.order并添加一个新字段,在您的情况下可以将其命名为start_date,但要确保它在sale.order上不存在。
你可以在这里看到一个如何在原始的Odoo v8 repo中定义这样一个字段的例子,然后你可以为这个字段设置一个默认值,参见这里的例子。
如果我没记错的话,Add to cart按钮触发了路线'/shop/cart/cart_update'处的控制器,因此您将不得不扩展方法cart_update并根据需要更新销售订单。
我建议您扩展该方法,执行super调用,就像这里所做的那样(这只是一个示例,以防您从未这样做过,当然您需要调整它),并将super的返回值保存在一个变量中,例如res = super(...)
super之后,您更改了销售订单(您需要以某种方式获取它,或者检查销售订单是否在res.qcontext中可用(可能不会,因为父级返回了重定向),或者通过request.website.sale_get_order()获取它,可以在此处看到。
在更新销售订单之后,您终于return res
应该采取以下措施:

@http.route()
def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
    res = super(WebsiteSale, self).cart_update(product_id,
                                               add_qty, set_qty, **kw)
    order = request.website.sale_get_order()
    # update your order now 
    # ... 

    # finally return 
    return res

相关问题