vlastný helper
- stan
- Člen | 5
Dobrý deň,
pozeral som tu na fóre riešenie tohto problému, mne to nejako nejde a vypisuje mi iné chybové hlášky.
Mám niečo zhruba takéto:
<?php
function getTemplate($subor) {
$t = new NTemplate;
$t->registerFilter('NCurlyBracketsFilter::invoke');
$t->setFile(t3lib_extMgm::extPath($this->extKey).'html/'.$subor.'.phtml');
$t->setTranslator($this);
// $t->registerHelper('date', 'NTemplateHelpers::date');
$t->registerHelper('date', array('tx_kioshowto_util', 'dateint2str'));
$t->registerHelperLoader('NTemplateHelpers::loader');
//var_dump($t->getHelpers());
return $t;
}
?>
a helper:
<?php
class tx_kioshowto_util {
static $dateFormat = 'd. m. Y';
public static function dateint2str($aaa) {
return date(self::$dateFormat, $aaa);
}
}
?>
Vypisuje mi to warning Call to undefined method NTemplate::date(). in /srv/www/htdocs/…/lib/Nette/Templates/Template.php on line 263
Nejde ani ten zapoznámkovaný originál helper.
Z nette používam zatiaľ iba šablónovaciu časť, zapracovanú do TYPO3 modulu.
Mám nette 0.9 prefixed verziu, php 5.2.5
Ďakujem za odpovede.
Editoval stan (13. 7. 2009 18:34)
- Ondřej Mirtes
- Člen | 1536
Registrace helperu v té tvé podobě by měla vypadat nějak takto:
$t->registerHelper('date', 'tx_kioshowto_util::dateint2str');
- kravčo
- Člen | 721
stan napsal(a):
$t->registerHelper('date', array('tx_kioshowto_util', 'dateint2str'));
LastHunter napsal(a):
$t->registerHelper('date', 'tx_kioshowto_util::dateint2str');
Oba varianty sú ekvivalentné (cca od PHP 5.2.3), Nette akceptuje oba a
upravuje skrátený variant 'class::method'
na
array('class', 'method')
kvôli podpore PHP 5.2.0+.
Tá chyba je výnimka, ktorú vyhadzuje NTemplate::__call(), ale tým, že je vyhodená vo volaní __toString(), musí byť zmenená na warning. V debugovaní by mohlo pomôcť, ak zmeníš vykresľovanie templejty tak, že priamo zavoláš __toString():
echo $template
→
echo $template->__toString(TRUE)
(string) $template
→
$template->__toString(TRUE)
Po tom by sa roboty mala chytiť ladenka…