po upgradu Latte prestala fungovat inheritence bloku
- kazz
- Člen | 8
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)
- kazz
- Člen | 8
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 ?
- kazz
- Člen | 8
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)