Dynamické snippety v includované šabloně
- PavelJurasek
- Člen | 39
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>
- michal.lohnisky
- Člen | 64
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
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
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
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) ?