0

odoo 8 でモジュールを作成しました。モジュールの目的は、別のページへのリンクを含むページを作成することです。最初にメイン テンプレートがレンダリングされ、次にサブ ページへのリンクがあることを意味します。メインページまですべて正常に動作します。私はcontrollers.py、models.py、views(default.xml)を持っています。私のopenerp .pyでは、「data」の値:「views/default.xml」。コントローラーは次のとおりです。

@http.route('/test/', auth='public')
def index(self, **kw):
    return http.request.render('test.main',{ 'root':'/test' })

@http.route('/test/sub', auth='public')
def sub(self, **kw):
    return http.request.render('test.sub',{ 'root':'/test' })

私のテンプレートでは、2 つの ID (つまり main と sub ) があります。

<openerp>
  <data>
       <template id='main'>
           <div class='body'>
                 test body 
                 click to go to next page : <a t-attr-href = "#{ root }/sub">Next Page</a>
           </div>
           <div class='footer'>
                 test footer 
           </div>
       </template>

       <template id='sub' inherit_id="main">
           <xpath expr="//div[@class='body']" position="replace">
           <div class="page">
               replaced data
           </div>
           </xpath>
       </template>
  </data>
</openerp>

このコードを実行すると、リンクではなくメイン ページが既に置き換えられていることがわかります。本体はデフォルトで置き換えられます。しかし、サブページのリンクをクリックしたときに本文を置き換える必要があります。

私はodooの初心者なので、それについて何も知りません。

4

1 に答える 1

0

Xpathはモジュールの更新直後に機能しますか(テンプレートのレンダリング時ではありません)

その場合は、次のようにt-ifを使用 してください。

< t t-if ="not show_tab"> // original data </t>


< t t-if ="show_tab"> // replaced data </t>

コントローラーからレンダリングkeyword:show_tabします。

もう1つ、私の個人的な提案ですが、タブを置き換えるためだけに2つのコントローラーを作成しないでください。

odoo では1 つのコントローラーで複数のルートを処理できます。DRYの概念に従ってみてください。

于 2016-05-09T15:54:59.767 に答える