Implementace filtru upravujícího PHP v původní šabloně
- Vojtěch Vondra
- Člen | 11
Zdravim,
ve starých šablonách (téměř kompatabilní s čistým PHP a potažmo i Nette) mám vlastní „makra“ přímo v PHP kódu, které při přecházení na Nette Template bych pomocí Nette filtru potřeboval přepsat na PHP kód, se kterým si pak šablonovač poradí.
Problém je v tomto kodu:
<?php
foreach ($this->filters as $filter) {
$content = self::extractPhp($content, $blocks);
$content = $filter->invoke($content);
$content = strtr($content, $blocks); // put PHP code back
}
?>
Ten mi do filtru pustí jen takové ty přejmenované bloky, kde byl PHP kód, ale PHP samotné už ne.
Konkrétně mám v šabloně např. konstrukci @keyname
,
kterých bych potřeboval přepsat na $var['keyname']
;
Napadá vás nějaké řešení, kromě překrytí compile v třídě Template?
- Filip Procházka
- Moderator | 4668
Napadá, napiš si „translator“, který ti hromadně převede tvou syntax na Latte. Což by ostatně mohla být zajímavá featurka, mít takový kompilátor do latte šablon, třeba ze smarty apod.
- Vojtěch Vondra
- Člen | 11
To je sice fajn, ono udělat překladač na PHP kód (velmi různorodý) do Latte jen tak nejde. Jednotlivé výskyty těch věcí by určitě člověk do Latte převedl, bohužel v kontextu by se to celé rozpadlo, přesto díky.