Ruční vykreslení generovaného formuláře checkbox a group

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TheNEoo
Člen | 75
+
0
-

Ahoj všem,
Snažím se ručně vykreslit formulář, který obsahuje checkboxy a hlavě groupy Viz. Nejlepší je demo ukázat.

V sanboxu jsem našel ukázku, jak takovýto formulář vykreslit ručně a část mně funguje, ovsem nedokážu pochopit, jak to vlastně vykreslit, tak jako to mam v demu. V demu není vykreslen ručně.

V sandboxu je:

	<form n:name=$form class=form-horizontal>
	<ul class=error n:if="$form->ownErrors">
		<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 class="col-sm-2 control-label">{label $input}</div>

		<div class="col-sm-10">
			{if $input->getOption(type) in [text, select, textarea]}
				{input $input class => form-control}
			{elseif $input->getOption(type) === checkbox}
				<div class="checkbox">{input $input}</div>
			{else}
				{input $input}
			{/if}

			<span class=has-error n:ifcontent>{$input->error}</span>
		</div>
	</div>
	</form>

To vykreslí jednotlivé prvky, ovšem já potřebuji vykreslit nejdříve group a následně její prvky, viz demo
Děkuji předem za pomoc :)

Editoval TheNEoo (1. 12. 2016 11:23)

Mortisson
Člen | 21
+
0
-

Ahoj, jednoduše si nejdřív foreachem projeď groupy a v nich nasledně jejich prvky

{form form}
	<div class="group" n:foreach="$form->groups as $group">
		{foreach $group->controls as $name => $input}
        	{label $input}{$name}{/label}{input $input}
        {/foreach}
    </div>
{/form}

Editoval Mortisson (2. 12. 2016 9:16)

TheNEoo
Člen | 75
+
0
-

Mortisson napsal(a):

Ahoj, jednoduše si nejdřív foreachem projeď groupy a v nich nasledně jejich prvky

{form form}
	<div class="group" n:foreach="$form->groups as $group">
		{foreach $group->controls as $name => $input}
        	{label $input}{$name}{/label}{input $input}
        {/foreach}
    </div>
{/form}

Děkuji za popostrčení něco obdobného mě také napadlo ale padal jsem na:

1×
PHP User Deprecated: Missing annotation @property for Nette\Application\UI\Form::$groups used in ....
7×
PHP User Deprecated: Missing annotation @property for Nette\Forms\ControlGroup::$controls used in ....

Což u tvého příkladu padám na tom samém. Nenašel jsem jiný způsob zatím.
V dokumentaci jsem neobjevil čím to nahradit.
A hlavně mel jsem napsat taky verzi nette 2.4 / php7

David Matějka
Moderator | 6445
+
+3
-

Pouzij namisto toho metody getGroups a getControls