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' })

在我的模板中,你有两个 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从你的控制器渲染。

还有一件事是我个人的建议,不要创建两个控制器来替换标签。

odoo 中单个控制器可以处理多个路由。请尽量遵循DRY的概念。

于 2016-05-09T15:54:59.767 回答