2017-01-25 7 views
1

Немного новый в Odoo (стажировка), поэтому я хотел знать, была ли эквивалентность включать (php) в Odoo (qweb)?Как включить в Odoo?

В противном случае, как мы можем добавить xml-файл в другой?

Например, я получил свой основной файл xml и хочу называть разные страницы или части страниц (по id или классу) на моей главной странице, возможно ли и как мы можем это сделать?

Я пробовал xiinclude, но кажется, что он там не работает ... Я видел, но я не могу понять, как это работает даже с документацией о odoo.

Я работаю над Odoo 10.

сердечным приветом,

ответ

2

Эквивалент является t-call функция или директивы. t-call содержит другой файл шаблона. Вы можете использовать его для обертывания контента, который обычно используется для шаблона website.layout, как показано в примере ниже.

<openerp> 
    <data> 
     <template id="addon_name.template_name" name="Template Name"> 
      <t t-call="website.layout"> 
       <div>Hello World</div> 
      </t> 
     </template> 
    </data> 
</openerp> 

Однако вам не нужно использовать его в качестве обертки для контента. Вы можете использовать эту директиву как средство для включения других шаблонов в существующий шаблон. Именно так.

<openerp> 
    <data> 
     <template id="addon_name.template_name" name="Template Name"> 
      <t t-call="website.layout"> 
       <t t-call="addon_name.top_section"/> 
       <t t-call="addon_name.middle_section"/> 
       <t t-call="addon_name.bottom_section"/> 
      </t> 
     </template> 
    </data> 
</openerp> 

Для этой работы вы должны быть уже определены шаблоны, в моем примере они были бы top_section, middle_section и bottom_section. Также обратите внимание, как эти шаблоны не включают обертку для website.layout. При включении дополнительного шаблона вы не хотите включать шаблон website.layout, поскольку он предназначен для предоставления общей структуры веб-страницы и предназначен для использования в качестве обертки для остальной части вашего контента.

<openerp> 
    <data> 
     <template id="addon_name.top_section" name="Top Section"> 

       <div>Hello World</div> 

     </template> 
    </data> 
</openerp> 

Если вы наследуете от другого шаблона, вы должны сначала указать механизм шаблонов, где вы хотите ввести код. Это делается с использованием выражения xpath. Существует много примеров выражений xpath в исходном коде Odoo. Пожалуйста, просмотрите там или в Интернете. Пример ниже приведен в ответ на сделанные ниже замечания, которые были конкретно касаются шаблона отчета. При создании шаблонов отчетов вы не хотите включать шаблон website.layout. Это для просмотра веб-сайта не qweb.

<openerp> 
    <data> 
     <template id="addon_name.template_name" inherit_id="addon_name.template_name"> 
      <xpath expr="//div[@class='class_name']" position="replace"> 
        <t t-call="addon_name.top_section"/> 
        <t t-call="addon_name.middle_section"/> 
        <t t-call="addon_name.bottom_section"/> 
      </xpath> 
     </template> 
    </data> 
</openerp> 
+0

Где вы создаете шаблоны top_section, middle_section и bottom_section, я имею в виду, в каком файле и что делать с унаследованными файлами, потому что я получил вопрос, связанный с этим, т-вызов =»" не может быть расположенный в родительском представлении ... –

+0

http://prntscr.com/e0j3a2 http://prntscr.com/e0j3fb есть мои файлы –

+0

Поскольку вы наследуете, вам нужно сначала предоставить вашему шаблону позицию в родительском шаблоне, чтобы введите код шаблона. Вероятно, существует реальный термин для описания того, что я только что сказал, но я не знаю, что это такое. Я обновлю свой код с примером включения другого шаблона xml в унаследованном представлении. Глядя на ваш пример, я думаю, вам нужно просто переместить свой 't-call' внутри выражения' xpath'. –

 Смежные вопросы

  • Нет связанных вопросов^_^