2017-01-25 98 views
1

即時在Odoo(實習)中有點新,所以我想知道在Odoo(qweb)中是否包含(php)等價?如何在Odoo中包含?

否則,我們如何在另一個包含一個xml文件?

例如,我得到了我的主要xml文件,並且想要將不同的頁面或部分頁面(通過id或class)調入我的主頁面,是否有可能以及如何才能做到這一點?

我試過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表達式完成的。在Odoo源代碼中有很多xpath表達式的例子。請在那裏或在線查看。下面的例子是針對下面提出的具體關於報告模板的評論。創建報告模板時,您不想包含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,我的意思是在哪個文件,哪些遺傳性文件做,因爲我有一個鏈接到一個問題,T-通話=」「不能位於父視圖... –

+0

http://prntscr.com/e0j3a2 http://prntscr.com/e0j3fb有我的文件 –

+0

因爲你是繼承你需要首先給你的模板在父模板中的位置注入你的模板代碼。可能有一個真實的術語來描述我剛纔所說的,但我不知道它是什麼。我將用一個在繼承視圖中包含另一個xml模板的示例更新我的代碼。看看你的例子,我想你只需要在你的'xpath'表達式中移動't-call'。 –