include php souboru v šabloně

RadaR
Člen | 46
+
0
-

Je možné, nějakým způsobem, provést include php skriptu v Latte 3.0? Mám projekt, který používá staré Latte (ještě pod Nette 2.1.x, ale samostatně), ale okolnosti nás dohnaly k tomu, přejít na aktuální PHP. Tudíž je nutno upgradeovat i Latte.

Bohužel, né všechny „prasárny“, které jsem používal, lze aplikovat i nadále. Zatím se postupně se vším zdárně prokousávám, ale narazil jsem na situaci, která mi dost komplikuje život.

V šablonách jsem používal něco jako:

{include sql.php, podminka1 => $sql_podminka1, typ_druh => 'xyz'}

což dříve normálně zafungovalo zamýšleným způsobem, tj. vložilo a provedlo php skript, včetně předaných proměnných. Vyžádal jsem si tak data, která jsem moh následně v šabloně iterovat.

Nyní však Latte php skript vloží pouze jako „textový obsah“, bez toho, aniž by se fakticky provedl.

{php include/require…} pochopitelně také nelze.

use case bylo v tomto případě takové, že jsem si tímto způsobem dokázal „per-šablony“ řídit, kdy se mají načítat jaká data, z jakých tabulek, aniž bych zbytečně volal SQL dotazy nad vícero tabulkami, se kterými u daného zákazníka pracovat nepotřebuji (jedná se o data pro záložky v detailu produktu na e-shopu; přičemž máme různé šablony pro různé zákazníky a každý měl títmo způsobem „customizováno“, které tabulky používá: tabulka „příslušenství“, tabulka „alternativy“, tabulka „skupiny“, atd…).

Jediný způsob, který mne nyní napadá je, že bych si musel někde nadefinovat pro toho kterého zákazníka seznam tabulek / záložek, pro něž potřebuji data načítat, samotné include potom řešit v php souboru a netahat jej do šablony. Což obnáší úplné překopání stávající logiky a dost práce navíc, takže se snažím najít nějaké jiné východisko. Už i bez toho je s přepisováním šablon a úprav php dost práce.

Editoval RadaR (4. 7. 2023 20:43)

Marek Bartoš
Nette Blogger | 1175
+
+1
-

Ideálně skript přepsat do Latte, ale dá se to snadno i obejít přes PHP funkci :)

{php includeLatte(__DIR__ . '/sql.php', ['podminka1' => $sql_podminka1, 'typ_druh' => 'xyz'])}
function includeLatte(string $phpFile, array $vars): void
{
	extract($vars);

	include $phpFile;
}
RadaR
Člen | 46
+
0
-

To vypadá použitelně – díky moc, vyzkouším!