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

tomas.bart95
Člen | 1
+
0
-

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
+
0
-

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…