po upgradu Latte prestala fungovat inheritence bloku

kazz
Člen | 8
+
0
-

Zdravim, potrebuji poradit jak spravne na inheritenci bloku v nove verzi Latte, puvodni verze: v2.8.2, nova verze: v3.0.4.
Drive vse fungovalo jak ma, po upgradu uz ne :(

Struktura:
Soubor @layout.latte:

{block head}{/block}
/*********/
{include content}

Soubor default.latte:

{block content}
data(default,content)
{include include.latte}

Soubor include.latte:

{block head}data(include,head){/block}
{block content}
data(include,content)

Problem je v tom, ze se ze souboru include.latte do souboru @layout.latte dostane pouze cely obsah nehlede na blocky, neboli vysledek je:

/*********/
data(default,content)
data(include,head)
data(include,content)

drive byl:

data(include,head)
/*********/
data(default,content)
data(include,content)

Zkousel jsem {import include.latte}, {include include.latte with blocks}, definovat kazdy block znovu v default.latte a do nej dat {include parent}, kombinace tehto zpusobu, nic z toho nefunguje, ve vetsine pripadu se data z jednotlivych bloku ztrati a vubec se nezobrazi, nebo dojde k zacykleni koncicim chybou ohledne nedostatku pameti.

Nevite prosim nekdo jak to vyresit ? Dekuji.

Editoval kazz (25. 11. 2022 5:05)

David Grudl
Nette Core | 8218
+
0
-

To není možné, aby to dříve fungovalo…

kazz
Člen | 8
+
0
-

Aha, tak ja jsem se mylne domnival ze to fungovalo, skutecne to nefungovalo ani predtim.
Zjistil jsem, ze se funkce sablony samotneho bloku vola drive nez main kde k importu bloku dochazi, to znacne komplikuje situaci.
Existuje nejaky zpusob jak dostat block z include do layout ?

David Grudl
Nette Core | 8218
+
0
-

Přes {import}

kazz
Člen | 8
+
0
-

V jakem smyslu by mi {import} mel pomoct ? Neudela vubec nic, nevim jestli jednoduse nechapu jak ho pouzit, nebo je to bug, tady je priklad jak chapu ze by mel fungovat:

Soubory stejne jako v uvodnim prispevku krom default.latte ktery je ted pouze:

{import include.latte}

Vysledek: Cannot include undefined block 'content'

Muj zaver proc se toto deje je ten, ze metoda sablony main ve ktere je „rozbalene“ makro import na $this->createTemplate('include.latte', $this->params, "import")->render() se vubec nezavola.

Jednoduchy test tohoto tvrzeni:
Soubor default.latte:

{import include.latte}
test
{php die()}

Vygeneruje php:

final class Template783830c219 extends Latte\Runtime\Template
{
	// ...

	public function main(array $ʟ_args): void
	{
		// ...
		$this->createTemplate('include.latte', $this->params, "import")->render();
		echo 'test
';
		die();
	}
	// ...
}

Php neumre a „test“ na vystupu nikde neni.

Editoval kazz (26. 11. 2022 7:57)