sandbox form.latte & bootstrap 5
- MW
- Člen | 626
Zdravím s prosím o nakopnutí :)
vycházím z posledního Sandboxu, kde se includuje v @layout.latte šablona form.latte:
{* for Bootstrap v3 *}
{define bootstrap-form $formName}
<form n:name=$formName>
<ul class=error n:ifcontent>
<li n:foreach="$form->ownErrors as $error">{$error}</li>
</ul>
<div n:foreach="$form->controls as $name => $input"
n:if="!$input->getOption(rendered) && $input->getOption(type) !== hidden"
n:class="form-group, $input->required ? required, $input->error ? has-error">
<div>{label $input class=>"form-label"}</div>
<div class="mb-3">
{if $input->getOption(type) in [text, select, textarea]}
{input $input class => "form-control"}
{elseif $input->getOption(type) === button}
{input $input class => "btn btn-primary"}
{elseif $input->getOption(type) === checkbox}
<div class="form-check">
{input $input class => "form-check-input"}
{label $input class => "form-check-label"}
</div>
{elseif $input->getOption(type) === radio}
<div class="radio">{input $input}</div>
{else}
{input $input}
{/if}
<span class=help-block n:ifcontent>{$input->error ?: $input->getOption(description)}</span>
</div>
</div>
</form>
{/define}
a sekce pro checkbox mě neaplikuje class.. a ani nevykresluje samosatně ten label.
{elseif $input->getOption(type) === checkbox}
<div class="form-check">
{input $input class => "form-check-input"}
{label $input class => "form-check-label"}
</div>
Poradíte prosím, jak to tam dostat? Upravuji to pro Bootstrap ver 5
Díky moc!
- MW
- Člen | 626
Ještě dodám výstup:
<label for="frm-signInForm-remember"><input type="checkbox" name="remember" id="frm-signInForm-remember" autocomplete="off">Zapamatovat</label>
Asi bych potřeboval docílit
<label>Zapamatovat</label>
<input type="checkbox" name="remember" id="frm-signInForm-remember" autocomplete="off">
Díky!
- dakur
- Člen | 493
@MW Ahoj, podle mě se to do té větve vůbec nedostane, ale všechno
skončí v else
. Řekl bych, že proto, že zapomínáš, že Latte
je de facto PHP, takže všechny stringy musí být správně uvozené. Takže
nemá být:
{if $input->getOption(type) in [text, select, textarea]}
ale:
{if $input->getOption('type') in ['text', 'select', 'textarea']}
Pokud to takhle změníš všude, mělo by to podle mého názoru fungovat. Divné je, že to nekřičelo undefined constant, možná máš nějakou starší verzi PHP.
Editoval dakur (26. 3. 2021 9:44)
- David Grudl
- Nette Core | 8239
Latte je rozšířené PHP a například alfanumerické stringy nemusí být v uvozovkách.