Odoo 14: Leer valores de un form en controller

61 views
Skip to first unread message

javie...@gmail.com

unread,
Jan 25, 2021, 4:02:24 AM1/25/21
to Usuarios Odoo / OpenERP en España
Hola, siento el tostón.

Me he quedado atascado y no consigo salir por mas vueltas que le doy...

En versiones 12 y 13 este mecanismo que explico me ha funcionado bien pero al intentar migrar mi desarrollo a la versión 14 no lo logro.

El asunto es que heredo la plantilla para visualizar un producto en la web y la modifico para agregarle un campo oculto con un valor por defecto que obtengo de la querystring:

Por ejemplo, si yo navego a la dirección /shop/producto?valor=loquesea leo "valor=loquesea" y lo pongo en un campo oculto del formulario de la página del producto... esto lo hago, y si miro el código fuente de la página de producto puedo ver que mi campo aparece, dentro del formulario, con el valor, todo bien creo:

...
<form action="/shop/cart/update" method="POST">
                                <input type="hidden" name="csrf_token" data-oe-model="ir.ui.view" data-oe-id="1337" data-oe-field="arch" data-oe-xpath="/t[1]/t[4]/div[1]/section[1]/div[2]/div[2]/form[1]/input[1]" value="f9f566e6c46febe5ddcfef470abf888b94bbb40fo1611566724">
                                <div class="js_product js_main_product">
                                    
                                        <input type="hidden" class="product_id" name="product_id" data-oe-model="ir.ui.view" data-oe-id="1337" data-oe-field="arch" data-oe-xpath="/t[1]/t[4]/div[1]/section[1]/div[2]/div[2]/form[1]/div[1]/t[1]/input[1]" value="60">

.....

y mi campo aparece el último, renderizado dentro del <form>

<input type="hidden" class="valor" name="valor" data-oe-id="2620" data-oe-xpath="/data/xpath[2]/input" data-oe-model="ir.ui.view" data-oe-field="arch" value="loquesea">

</form>

----------

Ahora, si yo pulso en el botón + o - de las cantidades, llegamos a mi controller donde heredo el metodo cart_update y quiero acceder a ese formulario enviado que contiene mi campo oculto con el valor.

@http.route(
         ["/shop/cart/update"],
         type="http",
         auth="public",
         methods=["POST"],
         website=True,
         csrf=False,
     )
     def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
         form = http.request.httprequest.form

        ......

En la variable form tengo el form enviado con todos los campos, producto_id, cantidad, atributos, variantes, 7 campos en total,  menos el mio... no hay manera de leer mi campo, simplemente no llega, es como si no existiera en el formulario que he enviado, sin embargo si miro el código fuente de la página de producto puedo ver que mi campo aparece, dentro del formulario, como el resto de campos.


¿Alguien ve si se me escapa algo? Esto mismo me funciona bien en la v12 y v13 pero ahora en la 14 parece que no...


Reply all
Reply to author
Forward
0 new messages