我在odoo 8中创建了一个模块。模块的目的是创建一个带有链接到另一个页面的页面。我的意思是,首先,主模板被呈现,然后有一个链接到子页面。在主页面之前一切都很好。我有controllers.py,models.py,views(default.xml)。在我的openerp.py中,'data‘:’view/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' })在我的模板中,u有两个in (即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>现在,当我运行这段代码时,我看到主页面已经被替换,而不是用链接。默认情况下,身体将被替换。但是我希望当点击子页面的链接时,身体应该被替换。
我是奥多的新手,所以对此一无所知。
发布于 2016-05-09 15:54:59
Xpath只在模块更新之后工作(而不是在重绘模板时)。
在这种情况下,只需使用t-if,比如:
< t t-if ="not show_tab"> // original data </t>
< t t-if ="show_tab"> // replaced data </t>从控制器呈现keyword:show_tab。
还有一件事是我个人的建议,不要为替换一个选项卡而创建两个控制器。
单控制器可以处理odoo .Please中的多个路由,尝试遵循干的的概念。
https://stackoverflow.com/questions/37117301
复制相似问题