Dynamické snippety v includované šabloně

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

Nette: Nette Framework 2.1-dev (revision a6b1f7f released on 2012–05–29)
PHP: 5.3.6

Pokud je v hlavní/nadřazené šabloně definován statický snippet a v includované šabloně je definován dynamický snippet, skončí Nette s hláškou:
„Nette\Latte\CompileException – Dynamic snippets are allowed only inside static snippet..“

{* default.latte *}
<div n:snippet="container">
	{include tree.latte, $rows}
</div>

{* tree.latte *}

<ul n:snippet="subcontainer-{$level}"></ul>
bambusak
Člen | 2
+
0
-

Ahoj, podařilo se toto někomu vyřešit?

michal.lohnisky
Člen | 64
+
0
-

Mám Nette 2.0.4

Pokud mám v šabloně jen

{snippet form1}
	{control form1}
{/snippet}
{snippet control2}
	{control control2}
{/snippet}

vše funguje, ale tento kód

{foreach $control->components as $component}
	{snippet $component->name}
		{control $component->name}
	{/snippet}
{/foreach}

hlásí výše zmíněnou chybu.

Když je validní první kód, tak přese musí být validní i druhý kód, protože jde pouze o rozepsání for cyklu.

Editoval michal.lohnisky (5. 9. 2012 16:35)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

michal.lohnisky Ta hláška tě nebuzeruje, ale oznamuje ti chybu :). Říká, že tvoje konstrukce není správně – proč by tedy správně měla být?

Dynamické snippety (tedy například takto vytvářené v cyklu) jsou povoleny pouze tehdy, jsou-li obaleny obyčejným snippetem.

Toto vlákno je o bugu (složitě řešitelném), že ačkoliv logicky se jeví obsah šablony tree.late jakoby obalený statickým snipettem, Nette to tam nechápe a křičí výše zmíněnou hlášku.

Editoval vojtech.dobes (5. 9. 2012 16:49)

michal.lohnisky
Člen | 64
+
0
-

Aha, jasně, došel jsem na tuto stránku z google a nevšiml jsem si, v jaké jsem kategorii.

V @layout.latte komponentu obaluji do statického snippetu, což tedy nefunguje. Pokud je statický snippet přímo v šabloně komponenty, je to bez problému.

Matúš Matula
Člen | 257
+
0
-

prechadzam s 1 projektom z nette 0.9 na aktualnu verziu a na tomto som sa sekol…je na to nejaky workaround (okrem nahadzania vsetkych dynamickych snippetov do 1 sablony so statickym obalovacom) ?