2017-06-01 3 views
0

J'ai ajouté textarea dans l'écran de paiement (/shop/payment) avec le code suivant.Comment obtenir les valeurs du site Web <textarea> in Odoo?

<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> 

enter image description here

Ce que j'ai essayé jusqu'à présent?

@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') 
    ###### 
    ###### 

Il me donne Aucun, Aucun

Ma question est que:

Comment puis-je obtenir des valeurs à niveau /boutique/paiement/valident?

+0

ce que voulez-vous atteindre? –

+0

@AtulArvind, je veux envoyer des notes à la commande de vente. Pas de l'écran de paiement, mais dans l'écran de paiement comme mentionné à la question. –

Répondre

1

Si vous voulez des données de n'importe quel contrôle html à l'intérieur du contrôleur tout en soumettant ce formulaire, vous devez donner une classe "contrôle de forme" à chacun des contrôles. Donc, ajoutez simplement class='form-control' dans votre contrôle textarea.

Voyez également que votre contrôle ne se trouve pas dans le formulaire html. Vous devez mettre votre contrôle dans le formulaire qui va être soumis et le contrôleur va appeler. Donc, vous devez mettre votre contrôle à l'intérieur de la forme que vous voulez obtenir. Ci-dessous est juste une de notre idée.

<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> 

J'espère que cela vous sera utile.

+0

Appréciez vos efforts. Je l'ai fait selon votre code suggéré mais ne me donne toujours aucun. Pourriez-vous me guider avec un code .py? –

0

....... Modèle ..........

<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 
+0

Appréciez votre réponse. Il semble que votre réponse fonctionnera sur l'écran de paiement. Je travaille sur l'écran de paiement. Laissez-moi essayer avec votre code suggéré dans l'écran de paiement. –

+0

Votre réponse ne résout pas mon problème. Dans ma question, vous pouvez voir, je travaille sur l'écran de paiement, pas d'écran de paiement. ça me donne toujours aucun. –