dotLiquid: модуль-расчет не работает должным образом
Поэтому я использую dotLiquid (1.8.0) в своем проекте для создания некоторых HTML-шаблонов, которые используются для создания PDF-файлов через EO.pdf.
В общем, я хочу проверить, указаны ли указанные даты в массиве Days (== Dates) за одну неделю, и добавить разрыв страницы после каждой недели.
Чтобы сделать мою проблему более понятной, сначала приведем соответствующий код:
{% for day in plan.Days %}
...
<table>
<tbody>
<tr class="footnote">
<td>** Debug:</td>
</tr>
<tr><td>Index: {{forloop.index}}, DateTypeChoice: {{plan.DateTypeChoice }}</td> <!-- just debug-statements -->
</tr>
</tbody>
</table>
{% assign endofweek = forloop.index | modulo: plan.DateTypeChoice %}
<p>endofweek: {{endofweek}}</p>
{%if endofweek == 0 %}
<p>"dubididu Index: " {{forloop.index}}</p>
<div style="page-break-before: always"></div>
{% endif %}
{% endfor %}
</body>
</html>
plan.DateTypeChoice
является целочисленным значением, содержащим количество дней недели (5 или 7 дней). Это определено в моей Drop-модели как
public int DateTypeChoice { get; set; }
Теперь в моем тестовом сценарии операторы отладки (Index
а также DateTypeChoice
) показывают ожидаемые значения, но на самом деле endofweek
содержит, например (см. ниже) 5
вместо 0
и я не знаю, почему это так.
Пример вывода:
** Debug:
Index: 5, DateTypeChoice: 5
endofweek: 5 // This should be 0 imho
Я также пытался поставить скобки для назначения, как
{% assign endofweek = (forloop.index | modulo: plan.DateTypeChoice) %}
но затем я получаю ошибку (значение не может быть NULL).
Я надеюсь, что кто-то может помочь мне здесь. Возможно, я использую по модулю неправильно? Как я знаю, forloop.index - это числовое значение, а числовые значения, данные шаблону из модели, также обрабатываются синтаксическим анализатором как числовые значения, так что я не согласен.
Редактировать:
Основываясь на этой теме, я попытался сделать это с захватом вместо назначения, но с тем же результатом. Код:
{% capture endofweek %} {{ forloop.index | modulo: plan.DateTypeChoice }}{% endcapture %}
<p>"endofweek: " {{endofweek}}</p> //again 5 :-(
{%if endofweek == 0 %}
Помощь очень ценится здесь:-)
1 ответ
Наконец я нашел решение...
После повторного анализа я обнаружил, что в моих шаблонах буквально не применялся фильтр. Тем не менее, я нашел решение прямо здесь.
Я использую
Template.NamingConvention = new DotLiquid.NamingConventions.CSharpNamingConvention();
тоже так после смены modulo:
в Modulo
с большой буквы М, все работает нормально.. вздох