Шаблон Qweb не найден - Odoo v8

Я разрабатываю веб-сайт с Odoo v8. Я хочу написать фрагмент, что его структура загружается javascript. Ниже приведен мой код... Во-первых, у меня есть структура фрагмента:

<template id="snippet_hello" inherit_id="website2.snippets" name="Snippet Hello">
    <xpath expr="//div[@id='snippet_structure']" position="inside">
        <div class="oe_snippet">
            <div class="oe_snippet_thumbnail">
                <img class="oe_snippet_thumbnail_img" src="/path_to_block_icon/block_icon.png"/>
                <span class="oe_snippet_thumbnail_title">Hello</span>
            </div>
            <section class="oe_snippet_body">
                <div class="oe_snippet_hello">Hello ...</div>
            </section>
        </div>
    </xpath>
    <xpath expr="//div[@id='snippet_options']" position="inside">
        <div data-snippet-option-id='snippet_hello'
            data-selector=".oe_snippet_hello"
            data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel">
        </div>
    </xpath>
</template>

Затем у меня есть небольшой код javascript для отображения содержимого фрагмента:

(function () {
    'use strict';
    var website = openerp.website;
    qweb = openerp.qweb;
    qweb.add_template('/path_to_snippet_qweb_template/snippet_template_filename.xml');

    website.snippet.animationRegistry.hello = website.snippet.Animation.extend({
        selector: ".oe_snippet_hello",
        start: function(){
            var $content = $(qweb.render('website.snippet_hello', {a:1}));
            $content.appendTo(this.$target);
        },
    });

})();

Затем у меня есть шаблон QWeb для отображения содержимого моей структуры (имя файла: snippet_template_filename.xml):

<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
    <t t-name="website.snippet_hello">
        <div contenteditable="false">
            <p>Hello snippet</p>
            <t t-esc="a"/>
        </div>
    </t>
</templates>

Проблема в этой строке:

var $content = $(qweb.render('website.snippet_hello', {a:1}));

произошла ошибка, что «Шаблон« website.snippet_hello »не найден». Я заметил, что когда я вошел в систему как администратор (не пробовал другую учетную запись), он работает хорошо. Просто произошла ошибка, когда я вышел из браузера. Пожалуйста, дайте мне ваш совет, спасибо!


person Cuu Nguyen    schedule 26.10.2016    source источник


Ответы (1)


Это старый вопрос, связанный с устаревшей версией Odoo, но ответ актуален и сегодня (Odoo v11/12/13):

Template Not found может произойти, когда:

  • шаблон не загружен
  • имена шаблонов не равны между вашими файлами js и xml вашего шаблона. Имена шаблонов чувствительны к регистру.

Загрузка шаблона:

Обычно вы сохраняете свои шаблоны в своем проекте как /your_module/static/src/xml/snippet_template_filename.xml, и вы должны загрузить этот XML-файл в /your_module/__manifest__.py, добавив:

 'qweb': [
        "static/src/xml/snippet_template_filename.xml",
    ],

или сокращенно:

 'qweb': [
        "static/src/xml/*.xml",
    ],

Вы устанавливаете/обновляете свой_модуль в меню приложений odoo, затем вы можете убедиться, что ваш шаблон загружен, посмотрев на http://localhost:8069/web/webclient/qweb?mods=your_module, он должен вернуть ваши шаблоны.

Вы также можете посмотреть сетевой инспектор любимого браузера, чтобы проверить запрос http://localhost:8069/web/webclient/qweb?mods=[...] и убедиться, что в модах your_module загружается правильно.

Шаблон можно использовать в ваших js, как здесь (Odoo ›= v11):

odoo.define('your_module.NameOfYourJs', function (require) {
    "use strict";
    var QWeb = core.qweb;
    [...]
    var result = QWeb.render('website.snippet_hello', {a:1});

});

Примечание: для отладки ресурсов вы можете использовать http://localhost:8069/web?debug=assets.

Надеюсь это поможет!

person BlouBlou    schedule 03.07.2020
comment
Ты зверь! Благодарю вас! - person strangethingspy; 11.11.2020