SNIPPET kolem replikatoru

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

Ahoj
seznam tel cisel generujici se pomoci replicatoru sem obalil snippetem

ale nastal tam problem s foreach „Invalid argument supplied for foreach()“

{snippet telefoniCislaContainer}

            <div id="telefoniCislaContainer">
                {foreach $form['phones']->containers as $id=>$phone}

                    <div class="control-group error">
                        <label class="control-label" for="frm-pridatKontaktForm-phones-{$id}-cislo">Telefon {$id+1} :</label>
                        <div class="controls vosyNaseptavacObal">
                            {input $phone['predvolba'] class=>"input-mini", autocomplete=>"off"}
                            {input $phone['cislo'] autocomplete=>"off"}

                        {if $id>0}
                            {input $phone['removePhone'] class=>"btn btn-mini btn-warning"}
                        {/if}

                            <div id="naseptavacTelefon" class="vosyNaseptavac"></div>
                        </div>
                    </div>

                {/foreach}

                <div class="control-group">
                    <div class="controls">
                        {input phones-addPhone class=>"btn btn-mini btn-success ajax"}
                    </div>
                </div>
            </div>

            {/snippet}

"":https://forum.nette.org/…v-containeru

vosy
Člen | 532
+
0
-

tak jsem obalil cely formular a to uz funguje.

2bfree
Člen | 248
+
0
-

Příčina problému spočívá v tom, že cokoliv obalíš do {snippet}, tak se chová jako funkce, které jsou předány pouze proměnné z presenteru tedy ty

$presenter->getTemplate()->form = $this->getComponent('form');

můžeš udělat workaround v podobě

{form jmenoFormu}
	{snippetArea telefoniCislaFormContainer}
		{var $template->jmenoPromenne = $form}
	{/snippetArea}
	{snippet telefoniCislaContainer}
		{var $form = $template->jmenoPromenne}
		....
	{/snippet}
{/form}

A pak překreslit snippet telefoniCislaFormContainer spolu s telefoniCislaContainer

A pokud možno, nekombinuj češtinu a angličtinu v názvech jako $form['phones']$phone['cislo']

Editoval 2bfree (28. 12. 2014 9:59)