Nefunkční helper na vlastní makro
- Oli
- Člen | 1215
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
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}
- Oli
- Člen | 1215
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
@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)