Jak zapsat CheckBox v latte při použití forms-multiplier
- petrikinha
- Člen | 1
Ahoj, už si tady hraji s forms-multiplier druhý den a stále se mi
nedaří správně definovat Checkbox v latte šabloně při použití
forms-multiplier. Checkbox to vyktreslí správně ale nereaguje na kliknutí.
Myslím že mám špatně zadaný identifikátor proměné toho Checkboxu.
Nedaří se mi ale zjistit jak to správně zapsat. U běžného Checkboxu to
zapíšu takto:
{input $form['processors_check']:processors_check}
.
Takto to mám udělané v forms-multiplier a nejde to zaškrtnout:
{form staffForm}
<div n:multiplier="staff" class="row">
<div class="col-12 col-md-3">
{label name /}{input name}
</div>
<div class="col-12 col-md-3">
{label surname /}{input surname}
</div>
<div class="col-12 col-md-3">
{label email /}{input email}
</div>
<div class="col-12 col-md-3">
{label training_ordered /}{input training_ordered}
</div>
</div>
<div class="row">
<div class="col-12">
<label>Přidat další osoby</label><br>
{multiplier:add staff}
{multiplier:add staff:5}
</div>
</div>
{/form}
A PHP
private function staffForm(Form $form)
{
$multiStaff = $form->addMultiplier('staff', function (Nette\Forms\Container $container1, Nette\Forms\Form $form) {
$container1->addHidden('staff_id');
$container1->addText('name', 'Jméno')
->setDefaultValue('Jan');
$container1->addText('surname', 'Příjmení')
->setDefaultValue('Novák');
$container1->addText('email', 'Email')
->setDefaultValue('novak@example.com');
$container1->addCheckbox('training_ordered', 'Objednat');
}, 1, 30);
$multiStaff ->addCreateButton('Přidat osobu')
->addClass('theme-btn br-10');
$multiStaff ->addRemoveButton('Smazat osobu')
->addClass('theme-btn br-10');
$multiStaff->addCreateButton('Přidat 5 osob', 5)
->addClass('theme-btn checkout-btn br-10');
}
Měl by někdo nápad?
- Lumeriol
- Generous Backer | 64
U Multiplieru je treba pouzit Label checkboxu trochu jinak nez se pouziva pro inputy, jelikoz se primarne pouziva pro ten text (popisek) vedle zaskrtavaciho pole. Takze bud by ti mel stacit pouzit pouze
<label class="form-label">Nejaky popisek</label> {* pro zachovani designu *}
{input training_ordered}
a nebo bys musel pouzit iterator multiplieru, ktery by ti vypsal ten konkretni label. Jen to budes mit pak dvakrat, jednak jako textovy label a jednak jako popisek toho checkboxu (jelikoz hodnota je true/false dle toho zda je zaskrtnuty).
{var $i = 0}
<div n:multiplier="staff" class="row">
{while $form['staff']->offsetExists($i) === false} // pokud smazes nekterou osobu, je treba ji preskocit, jelikoz se multiplier nepreindexuje.
{do $i += 1}
{/while}
...
<div class="col-12 col-md-3">
<label class="form-label">{$form['staff'][$i]['training_ordered']->caption}</label>
{input training_ordered}
</div>
...
{do $i += 1}
</div>