iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Odoo

Odoo16 入門介紹系列 第 21

Day21_odoo_QWeb_T-tages(2)

  • 分享至 

  • xImage
  •  

介紹T-tages常用指令

t-field/t-ecs/t-out的使用
在製作報表時,我們最常用的就是t-fieldt-ecst-out,他們各別有自己的特性,我們先來看看範例:

<template id='libaray_report'>
		<t t-call ='web.html_container'>
			<t t-foreach='library_book' t-as='doc'>
				<t t-call='external_layout'>
					<div class='page'>
						<t t-field = ' book.name'/>
						
						<t t-ecs = ' book.name'/>
						
						<t t-out = "book.name + ' by ' + book.author"/>
					</div>
				</t>
			</t>
		</t>
</template>
  • t-field 直接將,model中指定的欄位值取出
  • t-ecs 會將model中的值取出,並轉成html格式後顯示
  • t-out 通常使用在條件輸出或運算上,也跟t-ecs一樣會轉譯值為html

另位t-ecs也可以提供輸出值為TrueFalse:

<template id='libaray_report'>
		<t t-call ='web.html_container'>
			<t t-foreach='library_book' t-as='doc'>
				<t t-call='external_layout'>
					<div class='page'>
						<t t-foreach ="doc.book_id.book_list"  t-as ='rct'>
							<h1 t-ecs=' rct.name '/>
							Sequence of foreach loop :-<span t-ecs ='rct_index'/>
							Is this first index? <span t-ecs ='rct_first'/>
							Is this last index? <span t-ecs = 'rct_last'/>
						</t>
					</div>
				</t>
			</t>
		</t>
</template>
  • <p t-ecs = 'rct_value'/> 判斷是否有值
  • <p t-ecs = 'rct_parity'/> 判斷是否為二進制
  • <p t-ecs = 'rct_even' /> 判斷是否為偶數
  • <p t-ecs = 'rct_odd' /> 判斷是否為奇數
  • <span t-ecs ='rct_index'/> 輸出當前loop的索引
  • <span t-ecs ='rct_first'/> 檢查是否為loop中第一個索引
  • <span t-ecs = 'rct_last'/> 檢查是否為loop中最後一個索引

t-if / t-elif / t-else的使用

在使用QWeb時,它也提供基本的判斷式,以下式範例:

<template id='libaray_report'>
		<t t-call ='web.html_container'>
			<t t-foreach='library_book' t-as='doc'>
				<t t-call='external_layout'>
					<div class='page'>
						<t t-if= ' book.name ' == 'Apple Tree'>
							<p> Yes,this is the book Apple Tree</p>
						</t>
						
						<t t-elif ='book.name' =='Apple Tree V2'>
							<p> No,this is the book Apple Tree version 2</p>
						</t>
						
						<t t-else ="">
							<p>No ,this is not the book Apple Tree</p>
							<p>This is <span t-field="book.name"/></p>
						</t>
					</div>
				</t>
			</t>
		</t>
</template>

比較特別要注意的是在t-else中會發現,必須使其為空,t-else才會觸發。

t-foreacht-as的使用

同時需要使用for loop我們也可以使用 t-foreach 以下式使用的範例:

<template id='libaray_report'>
		<t t-call ='web.html_container'>
			<t t-foreach='library_book' t-as='doc'>
				<t t-call='external_layout'>
					<div class='page'>
						<t t-foreach ="[1,2,3,4,5,6,7,8,9]"  t-as='rct'>
							<h1>t-ecs = 'rct'</h1>
						</t>
					</div>
				</t>
			</t>
		</t>
</template>

其實<t t-foreach='library_book' t-as='doc'>與python for loopfor doc in library_book是一樣的意思

t-sett-value 的使用方法
t-sett-value的功能是設置變量的值:

<template id='libaray_report'>
		<t t-call ='web.html_container'>
			<t t-foreach='library_book' t-as='doc'>
				<t t-call='external_layout'>
					<div class='page'>
						<t t-set = 'a'  t-value='1234'/>
							<t t-ecs='a'/>
							
							<t t-set = 'a' t-value='WebLearns'/>
							<t t-ecs='a'/>
							
							<t t-set = 'a' t-value='doc.name'/>
							<p t-ecs = 'a' />
						</t>
						
						<t t-set = 'abc' t-value='0'/>
						<t t-foreach = 'doc.book_id.book_list'  t-as='rct'
							<t t-set = 'abc' t-value = 'abc+1'/>
						</t>
						<p  t-ecs = 'abc'/>
					</div>
				</t>
			</t>
		</t>
</template>

t-call的使用方法

使用 t-call 可以將一個模板嵌套到另一個模板中,同時可以將目前模板的上下文傳遞給被呼叫的模板:

<template id='libaray_report'>
		<t t-call ='web.html_container'>
			<t t-foreach='library_book' t-as='doc'>
				<t t-call='external_layout'>
					<div class='page'>
						<h1>Hellow</h1>
					</div>
				</t>
			</t>
		</t>
</template>

上一篇
Day20_odoo_QWeb_T-tages
下一篇
Day22_odoo_QWeb_T-tages(3)
系列文
Odoo16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言