Как получить значения с сайта <textarea> в Odoo?
Я успешно добавил текстовое поле на экране оплаты (/ shop / payment) с помощью следующего кода.
<template id="payment_notes" name="PO" inherit_id="website_sale.payment">
<xpath expr="//div[@id='payment_method']" position="after">
<div class="mt32" method="post">
<textarea type="textarea" rows="5" name="po_notes" style="height:100px;width:800px" placeholder="Terms and conditions..."/>
</div>
</xpath>
</template>
Что я уже пробовал?
@http.route('/shop/payment/validate', type='http', auth="public", website=True)
def payment_validate(self, transaction_id=None, sale_order_id=None, **post):
print "\n=======res=paymentvalidate====", request.session.get('po_notes'), post.get('po_notes')
######
######
Это дает мне Нет, Нет
Мой вопрос таков:
Как я могу получить значения на следующем уровне / магазин / оплата / подтвердить?
2 ответа
Если вы хотите, чтобы данные какого-либо элемента управления html находились внутри контроллера при отправке этой формы, вам нужно предоставить один класс "form-control" каждому элементу управления. Итак, просто добавьте class='form-control'
внутри вашего текстового контроля.
Также видно, что ваш элемент управления не находится внутри формы HTML. Вы должны поместить свой контроль в форму, которая будет отправлена, и контроллер будет звонить. Итак, вы должны поместить свой контроль внутри формы, которую вы хотите получить. Ниже только одна из наших идей.
<template id="payment_notes" name="PO" inherit_id="website_sale.payment">
<xpath expr="//div[@id='payment_method']/div[@class='col-sm-12']/form" position="inside">
<div class="mt32">
<textarea type="textarea" rows="5" name="po_notes" style="height:100px;width:800px" class="form-control" placeholder="Terms and conditions..."/>
</div>
</xpath>
</template>
Надеюсь, это полезно для вас.
....... Шаблон..........
<template id="shopping_note" inherit_id="website_sale.checkout" name="Shopping Note">
<xpath expr="//a[@href='/shop/cart']" position="before">
<div class="mt16 mb16">
<label>My Notes</label>
<input name="note" class='form-control' type="text" placeholder="Note about your order..." t-att-value="checkout.get('note')"/>
</div>
</xpath>
</template>
... Py......
def checkout_form_save(self, checkout):
order = request.website.sale_get_order(force_create=1, context=request.context)
if checkout.get('note'):
order.write({'note': checkout.get('note')})
return super(WebsiteSale, self).checkout_form_save(checkout=checkout)
def checkout_values(self, data=None):
res = super(WebsiteSale, self).checkout_values(data=data)
checkout = res.get('checkout',{})
order = request.website.sale_get_order(force_create=1, context=request.context)
if not data:
checkout.update({'note': order and order.note or None})
else:
checkout.update({'note': data and data.get('note') or None})
return res