Nette 2.1 vlastní makro → převod na římská čásla
- Vojtěch Dobeš
- Gold Partner | 1316
Nehodí se na to spíš helper?
$this->template->registerHelper('roman', function ($number) {
// algorithm
return $romanNumber;
});
Tento kód je nejlepší nacpat do presenteru (případně do komponent, které by helperem měly také disponovat).
protected function createTemplate($class = NULL)
{
$template = parent::createTemplate($class);
$template->registerHelper('roman', ...);
return $template;
}
A použití v šabloně:
{115|roman} {* => "CXV" *}
Editoval vojtech.dobes (30. 8. 2013 23:15)
- Myiyk
- Člen | 321
Docela by se mi líbilo, kdyby tím disponovalo i samotné Nette, jako součást převádění v číselných soustavách.
{10|transfer:'hex'} {* A *}
{10|transfer:'bin'} {* 1010 *}
...
{10|transfer:'roman'} {* X *}
Není to sice nějak extra používaná věc, ale jako použití by si jistě našlo.
A když ne přímo v Nette, tak aspoň jako doplněk.
- enumag
- Člen | 2118
@Myiyk: Přímo v Nette je to myslím zbytečné, jako doplněk to smysl dává. Můžeš se toho chopit. ;-)
@motorcb: V tomhle případě určitě raději helper než makro. Jinak pro vlastní makra žádná použitelná dokumentace není (aspoň o ní nevím), tzn. nejjednodušší je podívat se na zdrojáky výchozích Latte maker, pochopit je a kopírovat.
- grogy
- Člen | 147
@motorcb
Mrkni na https://componette.org/search/?… –
tam uvidíš na příkladu, co tam patří a celkově uvidíš, jak lze helper
udělat.
@Myiyk
Souhlasím s @enumag, lepší to bude jako helper.
Edit:// tento odkaz je lepší – https://componette.org/search/?… (ukazuje, jak můžeš helper injectovat)
Editoval grogy (31. 8. 2013 10:18)
- Vojtěch Dobeš
- Gold Partner | 1316
motorcb: Viz moje první ukázka kódu – anonymní funkce (nebo jakýkoliv platný callback), který bude obsahovat tvůj algoritmus a vrátí onu konvertovanou hodnotu (římské číslo).