Мы используем программное обеспечение Odoo 12 для предприятий.
Мы хотим воспроизвести поведение кнопки «добавить в корзину» на страницах товаров. Итак, мы хотим добавить кнопку на другую страницу, и когда вы нажимаете кнопку, вы добавляете продукт в корзину и перенаправляетесь в корзину. Продукт жестко привязан к этой кнопке.
Это форма, используемая в шаблоне страницы продукта:
<form t-if="product._is_add_to_cart_possible()" action="/shop/cart/update" method="POST">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="js_product js_main_product">
<t t-placeholder="select">
<input type="hidden" class="product_id" name="product_id" t-att-value="product_variant.id"/>
<input type="hidden" class="product_template_id" name="product_template_id" t-att-value="product.id"/>
<t t-if="first_possible_combination" t-call="sale.variants">
<t t-set="ul_class" t-value="'flex-column'"/>
<t t-set="parent_combination" t-value="None"/>
</t>
<t t-else="">
<ul class="d-none js_add_cart_variants" t-att-data-attribute_exclusions="{'exclusions: []'}"/>
</t>
</t>
<t t-call="website_sale.product_price"/>
<p t-if="True" class="css_not_available_msg alert alert-warning">This combination does not exist.</p>
<a role="button" id="add_to_cart" class="btn btn-primary btn-lg mt8 js_check_product a-submit" href="#">Add to Cart</a>
</div>
</form>
Информация о нашем продукте: product.id = 135
и product_template.id = 83
.
Я обнаружил, что javascript, отвечающий за добавление в корзину, вызывается с использованием: /web/content/.../.../web.assets_frontend.js
. Это очень большой файл, но вы можете проверить пример здесь: file.
Какой qweb / form / js / ... я должен добавить на свою пользовательскую страницу, чтобы добавить продукт в корзину?
Спасибо за любую помощь, я давно на этом застрял!
Изменить: как заметил @Philippe Pageau, я уже могу использовать некоторый код, чтобы получить правильный продукт. Я пробовал реализовать его с помощью формы, используя этот код (самая простая версия формы, которую я могу придумать):
<t t-set="products" t-value="request.env['product.product'].search([['id', '=', 135]])"/>
<t t-foreach="products" t-as="product">
<form action="/shop/cart/update" method="POST">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<input type="hidden" class="product_id" name="product_id" value="135"/>
<input type="hidden" class="product_template_id" name="product_template_id" value="83"/>
<a role="button" id="add_to_cart" class="btn btn-primary btn-lg mt8 js_check_product a-submit" href="#">Add to Cart</a>
</form>
</t>
Но это ничего не делает, что мне не хватает?
Edit2:
Благодаря @Adan Cortes мы продвинулись дальше, но осталась еще одна проблема.
Теперь, когда пользователь нажимает кнопку, продукты добавляются в корзину с определенным количеством.
Теперь это мой код:
<t t-set="products" t-value="request.env['product.product'].search([['id', '=', 135]])"/>
<t t-foreach="products" t-as="product">
<div id="product_detail" class="oe_website_sale">
<form action="/shop/cart/update" method="POST">
<h4 t-esc="product.name"/>
<h6 t-esc="product.price"/>
<input class="form-control" data-min="1" name="add_qty" value="1"/>
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<input type="hidden" class="product_id" name="product_id" value="135"/>
<a role="button" id="add_to_cart" class="btn btn-primary btn-lg mt8 js_check_product a-submit" href="#">Add to Cart</a>
</form>
</div>
</t>
Но это мои последние проблемы:
Этот код не показывает цену товара.
<h6 t-esc="product.price"/>
отображает0.00
. Итак, как я могу отобразить цену?Наконец, можно ли добавить сразу несколько продуктов, используя только 1 кнопку и форму?