Шаблон 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}));
произошла ошибка, что "Template 'website.snippet_hello' not found" Я заметил, что когда я вошел в систему как администратор (еще не пробовал другую учетную запись), он работает хорошо. Просто произошла ошибка, когда я вышел из браузера. Пожалуйста, дайте мне ваш совет, спасибо!
0 ответов
Это старый вопрос, связанный с устаревшей версией 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",
],
Вы устанавливаете / обновляете your_module в меню приложения 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
.
Надеюсь это поможет!