Динамический TAL провайдер: выражения - PullRequest
1 голос
/ 19 марта 2012

Как можно динамически искать поставщиков в шаблонах страниц в `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>

Поставщик детали: не выполняется, потому что провайдер: предполагает, что ввод всегда является прямой строкой имени провайдера и, похоже, не принимает переменные.

1 Ответ

1 голос
/ 19 марта 2012

Подклассы выражения поставщика TALES 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}).

...