Я использую webmerge для создания документов.
У меня есть правило, которое выглядит так (игнорируйте условное {$docType}
для этого вопроса):
И я передаюДанные JSON, которые выглядят следующим образом:
{
"forms": [
{
"formID": 19,
"formUrl": "https://www.webmerge.me/merge/123456/y3wpgu",
"fillIns": {
"retainedAmount": "2000000"
}
},
{
"formID": 20,
"formUrl": "https://www.webmerge.me/merge/111111/a2X5yn",
"fillIns": []
}
]
}
Это прекрасно работает и загружает каждую форму на основе URL, предоставленного по мере необходимости.
Однако, если у меня есть две идентичные формы с отличающимися fillIns
, например:
{
"forms": [
{
"formID": 19,
"formUrl": "https://www.webmerge.me/merge/123456/y3wpgu",
"fillIns": {
"retainedAmount": "1000000"
}
},
{
"formID": 19,
"formUrl": "https://www.webmerge.me/merge/123456/y3wpgu",
"fillIns": {
"retainedAmount": "2000000"
}
}
]
}
Он объединяет две формы, как и должно, но каждая форма имеет оба значения для retainedAmount
на основе следующего сопоставления:
{foreach from=$forms item=_row}{if $_row.formID == 19}{if !empty($_row.fillIns.retainedAmount)}{$_row.fillIns.retainedAmount|number_format}{/if}{/if}{/foreach}
Таким образом, окончательный результат для обеих форм будет выглядеть следующим образом:
Оставшаяся сумма : 10000002000000
В результате я хочу, чтобы первый экземпляр формы отображал
Оставшаяся сумма : 1000000
и второйотображает
Оставшаяся сумма : 2000000
Похоже, что поскольку отображение выполняется циклически по каждому элементу в массиве каждый раз, поэтому каждыйФорма добавляет оба значения.
Я играл с array_shift
и array_pop
, чтобы правило повторялось, но рассматривало только один элемент за раз, но я не могу заставить его работать правильно.
Я думаю, мне нужно поместить каждый элемент в переменную, а затем ссылаться на эту переменную на карте, но я не могу заставить ее работать.Я бы показал все свои попытки, но я думаю, что это будет просто уродливо.
Наконец, я никогда не узнаю, по какому индексу или сколько одинаковых форм появятся с разными fillIns, поэтому я не могу использовать ключ дляИди ко мне.
Поскольку я понимаю, что не у всех есть webmerge, конечный результат через печать будет примерно таким:
FormID = 19 |Retained Amount = 1000000
FormID = 19 |Retained Amount = 2000000