Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
2 Replies
22578 Tampilan

My problem is that javascript does not find my templates.

The templates are in static/src/xml/status_templates.xml.

I added them to my manifest file with the full path name and *.  ('qweb': ['static/src/xml/*.xml'],)

The templates are:

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
    <t t-name="tabla_stock_notification.subscription_form">
        <div class="tabla_stock_notifications">
            <form method="post" id="tabla_stock_subscription" enctype="multipart/form-data">
                <div class="input-group">
                    <input type="email" class="form-control" required="required" aria-describedby="tabla-stock-subscription"/>
                    <div class="input-group-append">
                        <button class="btn btn-warning" id="subscribe_stock" type="submit"><i class="fa fa-envelope-o" role="img" aria-label="Subscribe"/></button>
                    </div>
                    <span class="stock_procurement_date"/>
                </div>
            </form>
        </div>
    </t>

The JS

odoo.define('tabla_stock_notification.stock_notification', function(require) {
    'use strict';

var core = require('web.core');
var config = require('web.config');
var publicWidget = require('web.public.widget');
var ajax = require('web.ajax');

var QWeb = core.qweb;

publicWidget.registry.StockNotifications = publicWidget.Widget.extend({
    selector: '#product_details',
    events: {
        'click #subscribe_stock': '_onGetCheckData',
    },

    init: function() {
        console.log('Konstruktor');
        var product_id = $('.product_id').val();
        var stockDiv = $('.tabla_stock_placeholder')
        console.log('Konstruktor, product ID ' + product_id);
        if (product_id != '') {
            ajax.jsonRpc('/stock-status', 'call', {'product_id': parseInt(product_id)}).then(function (data) {
                console.log('Calling stock status and gotten data: ' + data);
                let stock_data = JSON.parse(data);
                if (stock_data.hasOwnProperty('show')) {
                    if (stock_data['show'] == 'form') {
                        stockDiv = $(QWeb.render('tabla_stock_notification.subscription_form', {}));
                    } else if (stock_data['show'] == 'confirm') {
                        stockDiv = $(QWeb.render('tabla_stock_notification.confirm_subscription'));
                    } else if (stock_data['show'] == 'message') {
                        stockDiv = $(QWeb.render('tabla_stock_notification.stock_notification'));
                    };
                };



            });
        };
    },

I'm new to JS widgets. I've tried all that I could find and it never worked. I looked at other modules and I cannot figure out why mine does not work.

I'm just getting error:

Error: QWeb2: Template 'tabla_stock_notification.subscription_form' not found




Avatar
Buang
Penulis Jawaban Terbai

I had to add:

xmlDependencies: ['/tabla_stock_notification/static/src/xml/status_templates.xml'],

after the selector and it worked.


Avatar
Buang

I had the same problem, it worked using your advice on Odoo12

Thank you very much

Penulis

no problem, glad it helped you!

It's working fine for me (odoov14)

Jawaban Terbai

for odoo 15 please use downbelow snipt in your manifest.py file
'assets': {
'web.assets_backend': [
'module_name/static/src/js/your_js.js',
],
'web.assets_qweb': [
'module_name/static/src/xml/your_xml.xml',
],
},

please upvote the answer if is helps you Thanks.
Avatar
Buang

It worked for me, thanks!

Post Terkait Replies Tampilan Aktivitas
0
Jan 22
223
0
Mei 23
3314
1
Jan 23
8088
1
Des 20
7680
1
Jun 24
3537