Implementace filtru upravujícího PHP v původní šabloně

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Vojtěch Vondra
Člen | 11
+
0
-

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
+
0
-

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
+
0
-

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.