2012-07-26 25 views
5

Tôi đang cố gắng khởi chạy trình hướng dẫn từ một hành động được gọi từ một nút trong OpenERP. Tôi có thể khởi động trình hướng dẫn bằng cách sử dụng nút menu bên tốt, nhưng bất cứ khi nào tôi sử dụng thao tác trong một nút, tôi chỉ nhận được một vài lần làm mới, không có biểu mẫu mới mở ra.Khởi chạy trình hướng dẫn từ một nút trong OpenERP

Trình hướng dẫn khá cơ bản. Đây là mã:

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> 

Và tôi có mã cho nút có:

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

Tôi đã thử đặt id XML thẳng trong đó (không có $() d) và tôi đã thử sử dụng một trong hai hành động được xác định ở trên, tất cả đều có cùng kết quả. Tôi nhận được một lỗi nếu tôi đặt một tên hành động xấu, nhưng đó là về nó. Bất kỳ ý tưởng về nơi để đi từ đây?

Trả lời

6

Trong định nghĩa nút của bạn, hãy thay thế $(...)d bằng %(...)d.

Thay thế XML_ID sử dụng dấu phần trăm, chứ không phải ký hiệu đô la.

BTW, bạn không cần act_window đầu tiên. Việc xác định act_window thông qua thẻ ghi sẽ không tạo liên kết thanh bên; bạn phải sử dụng thẻ phím tắt <act_window> hoặc thêm liên kết thanh bên với bản ghi ir_value. Số thứ hai act_window (action_res_partner_terminal_wizard) sẽ tạo liên kết thanh bên và được sử dụng cho thao tác nút.

+0

Đó chính xác là vấn đề!Cảm ơn bạn đã làm rõ sự khác biệt giữa hai act_windows. Tôi đang gắn bó với cái đầu tiên, chủ yếu là bởi vì tôi không muốn nó xuất hiện trong sideview. –

+0

Có @Ali phải, Thst vấn đề chính xác, nhưng họ không cần phải defione act_windoe cũng –

+0

@Ali Tôi ngạc nhiên Tại sao bạn đề xuất sai hướng dẫn làm ở đây, sản phẩm này dẫn Opensource hướng tới kết thúc sai –

-2

wizard.xml của bạn sẽ trông như thế này:

<?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> 

và On Xem Nút cần được xác định như dưới đây

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

Bạn phải Xác định Id XML của ir.actions.act_window trên button action thay act_window xml id

Trân trọng.

+0

Thẻ là lối tắt, như

+0

@MohammadAli: Tôi muốn nhắc nhở rằng act_wondow đang liên kết bản ghi nó không hoạt động giống như ir.actions.act_window. –

+0

Hãy sửa tôi nếu tôi sai; Sự hiểu biết của tôi từ openerp/tools/convert.py rằng thẻ act_window chèn bản ghi ir.action.act_window bình thường cộng với thiết lập ir.value nếu src_model được định nghĩa để thêm hành động sidebar. Vì vậy, nó phải là bản ghi tương đương cho các hành động đơn giản nhưng bạn không thể sử dụng các chức năng thẻ bản ghi nâng cao như ref hoặc các thuộc tính tìm kiếm. –

Các vấn đề liên quan