я использую 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
так что правило будет повторяться, но будет учитывать только один элемент за раз, но я не могу заставить его работать правильно.
Я думаю, что мне нужно поместить каждый элемент в переменную, а затем ссылаться на эту переменную на карте, но я не могу заставить ее работать. Я бы показал все свои попытки, но я думаю, это будет просто уродливо.
Наконец, я никогда не узнаю, по какому индексу или сколько идентичных форм с разными заполнениями появятся, поэтому я не могу использовать ключ, чтобы направлять меня.
Поскольку я понимаю, что не у всех есть webmerge, конечный результат через печать будет примерно таким:
FormID = 19 |Retained Amount = 1000000
FormID = 19 |Retained Amount = 2000000
Задача ещё не решена.
Других решений пока нет …