Latte negeneruje značku tag „form“ u prvního formuláře na stránce

- tomas.bart95
- Člen | 1
Ahoj,
řeším problém při generování více formulářů na stejné stránce
pomocí foreach cyklu v Latte. Prvnímu formuláři na stránce chybí HTML tag
„<form></form>“ (je vidět v prohlížeči). Ostatní prvky se
vygenerují v pořádku, ale tlačítko submit logicky neprovede
žádnou akci.
Funkce pro generování formuláře
public function createComponentFinishMaterialOrderItemForm(): Form {
$form = new Form;
$form->addFloat('amountReceived', 'Přijaté množství (v kg)')
->setRequired();
$form->addInteger('batchNumber', 'Šarže:');
$form->addDate('expirationDate', 'Datum expirace:');
$form->addHidden('orderItemId');
$form->onSuccess[] = [$this, 'finishMaterialOrderItemSucceeded'];
$form->addSubmit('submit', 'Uložit');
return $form;
}
Definice modal window s formulářem v Latte šabloně:
{define modalFinishOrderItem}
<div class="modal fade" id="modalFinishOrderItem-{$orderId}-{$orderItemId}" tabindex="-1" aria-labelledby="modalFinishOrderItem-{$orderId}-{$orderItemId}-label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title fs-5" id="modalFinishOrderItem-{$orderId}-{$orderItemId}-label">Přijato:
<p class="small fw-light mb-0">Výroba</p>
</h2>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form n:name="{$formName}" id="finishOrderItemForm-{$orderItemId}">
<div class="modal-body">
<div class="mb-3 w-auto">
{ifset $form['amountReceived']}
<label n:name=amountReceived class="form-label">{label amountReceived /}
<input n:name=amountReceived class="form-control border-2 border-dark fw-bolder bg-warning" value="{$amountReceived}">
</label>
{/ifset}
</div>
<hr />
<div class="mb-3">
{ifset $form['batchNumber']}
<label n:name=batchNumber class="form-label form-control-sm">{label batchNumber /}
<input n:name=batchNumber class="form-control form-control-sm">
</label><br />
{/ifset}
{ifset $form['expirationDate']}
<label n:name=expirationDate class="form-label form-control-sm">{label expirationDate /}
<input n:name=expirationDate class="form-control form-control-sm" value="">
</label>
{/ifset}
</div>
<input n:name=orderItemId value="{$orderItemId}">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Zavřít</button>
{input submit, class: "btn btn-success"}
</div>
</form>
</div>
</div>
</div>
{/define}
Include definovaného formuláře do jiné šablony
{include modalFinishOrderItem from '../../includeBlocks.latte',
formName: 'finishMaterialOrderItemForm',
orderId: $item->order_id,
orderItemId: $item->id,
materialName: $item->material->name,
amountRequested: $unitConversionRate->convertAmountToBase(round($item->amount), 2),
amountReceived: $unitConversionRate->convertAmountToBase(round($item->amountReceived), 2),
mode: 'materials'
}
Jen doplním, že problém nastává i tehdy, pokud je generovaný formulář finishMaterialOrderItemForm na stránce jako jediný bez jakýchkoliv dalších formulářů.
Mohu poprosit o radu, pokud by někdo věděl, proč tento problém nastává?
Moc díky,
Tomáš
Editoval tomas.bart95 (22. 2. 15:19)

- Kamil Valenta
- Člen | 850
Pokud chceš více stejných formulářů, použij Multiplier. Ale tady se zdá, že ani nepotřebuješ, stačí Ti jeden form v modalu a ajaxem mu jen měnit výchozí hodnoty…