--- tags: 隨手筆記, ODOO --- # 隨手筆記 - ODOO act_window 的進階用法 ## 撰文動機 在 Odoo 中,只要在 act_window 中宣告要使用的 view_type,Odoo 就會把相對應描述的操作介面產生出來,但是這邊有一個問題,act_window 可以設定 UI 但是就算在 view_type 設定多個 view_type,最後還是只能設定一個 view_id(只能指定一個 UI,其他會自動產生),所以這邊要做的是設定完 act_window 之後,把多個 UI 指定給同一個 act_window。 ## 方法說明 在只有一個 UI 的時候,我們會在 act_window 裡的 view_id 指定我們要用的UI,但是如果有多個 UI 的時候,我們只要把需要用到的 view 都在 act_window 裡的 view_type 指定好,剩下的就是 act_window.view 的事了。 ## 用法示例: ### view ```xml <record id="jobapp_form" model="ir.ui.view"> <field name="name">jobapplication.form</field> <field name="model">hr.job</field> <field name="arch" type="xml"> <form string="PassportForm" version="9.0"> <group col="2"> <field name="job_code" /> <field name="key_skill" /> </group> </form> </field> </record> <record id="jobapp_tree" model="ir.ui.view"> <field name="name">jobapplication.form.tree</field> <field name="model">hr.job</field> <field name="arch" type="xml"> <tree string="PassportForm"> <field name="job_code" /> </tree> </field> </record> ``` ### act_window & act_window.view ```xml <record model="ir.actions.act_window" id="action_job_app"> <field name="name">JobApplication Application</field> <field name="type">ir.actions.act_window</field> <field name="res_model">hr.job</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> </record> <record model="ir.actions.act_window.view" id="action_jobapp_tree"> <field name="sequence" eval="1"/> <field name="view_mode">tree</field> <field name="view_id" ref="jobapp_tree"/> <field name="act_window_id" ref="action_job_app"/> </record> <record model="ir.actions.act_window.view" id="action_jobapp_form"> <field name="sequence" eval="2"/> <field name="view_mode">form</field> <field name="view_id" ref="jobapp_form"/> <field name="act_window_id" ref="action_job_app"/> </record> ``` ## 程式碼解說 前面的 view 設定應該都沒有問題,重點在後面的 act_window 和 act_window.view。 act_window 用來設定這個 action 會有的 view_type,還有預設要使用的 view,因為要指定多個UI,故不指定 view_id。 下面兩個 act_window.view 用來設定分別的兩個 view_type 要使用哪個 UI。 ## 結語
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up