SNIPPET kolem replikatoru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- vosy
- Člen | 532
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}
- 2bfree
- Člen | 248
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']
a $phone['cislo']
Editoval 2bfree (28. 12. 2014 9:59)