Nefunkční helper na vlastní makro

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

Ahoj,
nevím proč, ale nefunguje mě helper na vytvořený makro. Když nepoužiju vlastní makro, tak to funguje, ale na vlastní ne.

Makro vytvářím podle sokumentace:

public function templatePrepareFilters($tpl)
{
	$tpl->registerFilter($latte = new \Nette\Latte\Engine);
	$set = \Nette\Latte\Macros\MacroSet::install($latte->compiler);
	$set->addMacro('filesize', 'echo filesize($_SERVER["DOCUMENT_ROOT"] . %node.word)/1000000;', null);
}

a helper jsem na něj zkoušel použít: {filesize $path|number:2}. Nicméně se to chová jako bych žádný helper nepouužil. Vypíše to např. 1,500000 místo aby to vypsalo 1,50.
Co dělám špatně?

David Matějka
Moderator | 6445
+
0
-

jestli se nepletu, tak helper ti upravi ten vstup makra, nikoliv vystup

takze bud filesize registrovat jako helper a pouzit {$path|filesize|number:2} nebo to helperem number obalit, asi takhle: {block |number:2}{filesize $path}{/block}

enumag
Člen | 2118
+
0
-

Proč nepoužiješ Nettí helper?

Oli
Člen | 1215
+
0
-

matej21: Super, použil jsem ten výpis s tím blockem a to funguje dobře. Když budu mít čas tak si s tím kdyžtak ještě pohraju aby to vypadalo lip.

enumag: No vždyť jsem použil nettí helper. |number:2 je nettí helper. Nebo on existuje i něco na zjištění velikosti souboru?

Každopadně díky oboum za reakce :-)

enumag
Člen | 2118
+
0
-

@Oli: Aha, moc se omlouvám. Ten co je v Nette jen formátuje již zjištěnou hodnotu na výstup. V každém případě bych volil spíše tohle:

{$soubor|size|bytes}

Kde size je tvůj helper který zavolá jen return filesize($_SERVER["DOCUMENT_ROOT"] . $parameter); a vrátí velikost v bytech. O formátování se postará druhý helper bytes který je součástí Nette.

Editoval enumag (13. 2. 2013 10:18)

Oli
Člen | 1215
+
0
-

@enumag: Máš pravdu, tenhle zápis je přehlednější. Takže jsem to přepsal. Ono šlo taky o to, abych si konečně vyzkoušel tvorbu vlastního makra :-)