2012-07-26 50 views
5

我試圖從OpenERP中的按鈕調用的操作啓動向導。我可以使用側面菜單按鈕啓動向導,但是每當我在按鈕中使用該操作時,我都會進行一些刷新,而不會打開新窗體。從OpenERP中的按鈕啓動向導

該向導是非常基本的。下面是代碼:

wizard.xml

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 


     <record id="view_res_partner_add_terminal_wizard" model="ir.ui.view"> 
      <field name="name">res.partner.terminal.form</field> 
      <field name="model">res.partner.terminal</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml"> 
       <form string="Add terminal"> 
        <group colspan="4" > 
         <separator string="Select terminals to assign" colspan="4"/> 
         <field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/> 
         <newline/> 
        </group> 
        <separator string="" colspan="4" /> 
        <group colspan="4" col="6"> 
         <button icon="gtk-cancel" special="cancel" string="Cancel"/> 
         <button icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/> 
        </group> 
       </form> 
      </field> 
     </record> 

     <record id="action_res_partner_terminal" model="ir.actions.act_window"> 
      <field name="name">Assign Terminal</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">res.partner.terminal</field> 
      <field name="src_model">res.partner</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">form</field> 
      <field name="view_id" ref="view_res_partner_add_terminal_wizard"/> 
      <field name="target">new</field> --> 
      <field name="key2">client_action_multi</field> 
     </record> 

     <act_window id="action_res_partner_terminal_wizard" 
       name="Assign Terminal" 
       res_model="res.partner.terminal" 
       src_model="res.partner" 
       view_mode="form" 
       key2="client_action_multi" 
       target="new" 
     /> 


    </data> 
</openerp> 

而且我有一個與按鈕的代碼:

<button name="$(universal_account.action_res_partner_terminal_wizard)d" string="Assign Terminal" type="action" /> 

我試圖把直XML ID在那裏(不$()d),並且我試過使用上面定義的任何一個動作,所有這些都有相同的結果。如果我輸入了錯誤的操作名稱,我會收到一個錯誤,但這只是關於它。任何想法從哪裏去?

回答

6

在你的按鈕定義中,用%(...)d代替$(...)d

XML_ID替換使用百分號而不是美元符號。

順便說一句,你不需要第一個act_window。通過記錄標記定義act_window不會創建側邊欄鏈接;您必須使用快捷方式標記<act_window>或添加帶有ir_value記錄的側欄鏈接。第二個act_windowaction_res_partner_terminal_wizard)將創建側邊欄鏈接並用於按鈕操作。

+0

這就是問題所在!感謝您澄清兩個act_windows之間的區別。我堅持第一個,主要是因爲我不希望它在側面顯示。 – 2012-07-26 16:31:35

+0

是的@Ali權利,確切的問題,但他們是沒有必要defione act_windoe也 – 2012-07-27 04:27:03

+0

@Ali我很驚訝爲什麼你建議在這裏做指導錯誤,這導致開源產品走向錯誤的結局 – 2012-07-30 04:27:56

-2

你wizard.xml應該是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <record id="view_res_partner_add_terminal_wizard" model="ir.ui.view"> 
      <field name="name">res.partner.terminal.form</field> 
      <field name="model">res.partner.terminal</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml"> 
       <form string="Add terminal"> 
        <group colspan="4" > 
         <separator string="Select terminals to assign" colspan="4"/> 
         <field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/> 
         <newline/> 
        </group> 
        <separator string="" colspan="4" /> 
        <group colspan="4" col="6"> 
         <button icon="gtk-cancel" special="cancel" string="Cancel"/> 
         <button icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/> 
        </group> 
       </form> 
      </field> 
     </record> 


     <record id="action_res_partner_terminal" model="ir.actions.act_window"> 
      <field name="name">Assign Terminal</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">res.partner.terminal</field> 
      <field name="view_type">form</field> 
      <field name="view_id" ref="view_res_partner_add_terminal_wizard"/> 
      <field name="target">new</field> 
     </record> 
    </data> 
</openerp> 

,並在視圖按鈕應定義像下面

<button name="$(universal_account.action_res_partner_terminal)d" 
     string="Assign Terminal" 
     type="action" 
     help="Assign Terminal"/> 

必須在按鈕動作定義XML標識的ir.actions.act_window代替act_window xml id。

問候。

+0

標記是一個快捷方式,如

+0

@MohammadAli相同的記錄:我想提醒一下,act_wondow是鏈接記錄,它的行爲與ir.actions.act_window不相同。 – 2012-07-26 09:00:59

+0

如果我錯了,請糾正我;我從openerp/tools/convert.py得知,如果src_model被定義爲添加側邊欄動作,act_window標籤會插入正常的ir.action.act_window記錄和設置的ir.value。因此,它應該是簡單操作的等效記錄,但不能使用高級記錄標記功能,如ref或search屬性。 – 2012-07-26 11:37:47