Поэтому я использую dotLiquid (1.8.0) в моем проекте для создания некоторых HTML-шаблоны, которые используются для создания PDF-файлов с помощью EO.pdfdotLiquid: по модулю расчета не работает, как ожидалось
Так в основном, я хочу проверьте, соответствуют ли заданные даты массива 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).
Я надеюсь, что кто-то может помочь мне здесь. Возможно, я использую modulo неправильно? Как я знаю, forloop.index - это числовое значение, а числовые значения, заданные шаблону из модели, также рассматриваются как числовые значения парсером, поэтому я не в идеях.
Edit:
на основе this нить, я попробовал его с захватом вместо назначения, но тот же результат. Код:
{% capture endofweek %} {{ forloop.index | modulo: plan.DateTypeChoice }}{% endcapture %}
<p>"endofweek: " {{endofweek}}</p> //again 5 :-(
{%if endofweek == 0 %}
Помощь очень ценится здесь :-)
Хм, я помню, фильтры не работают с 'assign' тегами. И IIRC, значения 'capture' всегда являются строками. Не уверен, что это сработает, но вы можете попробовать использовать встроенный фильтр в свой тег 'if':' {% if (forloop.index | modulo: plan.DateTypeChoice) == 0%} ' –
Спасибо за ваш комментарий. Я просто попробовал, и странно, как есть, это всегда (!) попадали не только каждый пятый раз или около того. хотя в условии if, я выводю тот же расчет, и он показывает, что это НЕ 0. очень странное поведение. Кроме того, я попытался добавить просто старый старый {{3 | modulo: 2}} 'как скопированный из документов-документов где-то в моем шаблоне, но вместо' 1' я получаю '3'. Кажется, что фильтр просто не применяется, и поэтому парсер использует только первый аргумент. Я создал сообщение в группе google для dotliquid и надеюсь, что кто-то там может помочь. На данный момент, я думаю, мне нужно реорганизовать мою модель. – Dominik