如何在`structure provider:xxx
?
考虑以下非工作示例
<div class="portlet-manager-row" tal:repeat="portletId python:range(1,5)">
<div class="porlet-well_manager">
<h2 i18n:translate="portlet-well-a">Portlet Well <b tal:content="portletId" /></h2>
<tal:manager define="managerId string:ColophonPortlets${portletId}">
<span tal:replace="structure provider:managerId" />
</tal:manager>
</div>
</div>
部件提供程序:失败,因为提供程序:假定输入它始终是提供程序名称的直接字符串,并且似乎不接受变量。
答案 0 :(得分:1)
TALES Provider Expression是String Expression的子类,所以你应该能够这样做:
<div class="portlet-manager-row" tal:repeat="portletId python:range(1,5)">
<div class="porlet-well_manager">
<h2 i18n:translate="portlet-well-a">Portlet Well <b tal:content="portletId" /></h2>
<span tal:replace="structure provider:ColophonPortlets$portletId" />
</div>
</div>
注意字符串表达式是多余的,我移动并简化了$portletId
变量插值;对于更复杂的字符串插值,请使用${expression}
语法(例如${request/providername}
)。