[2.2.1] Překrytí defaultního helperu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Mysteria
- Člen | 797
Zdravím, pokud mám třídu s Helperama,
<?php namespace Utils;
class Helpers extends \Nette\Object {
public static function loader($helper) {
if (method_exists(__CLASS__, $helper)) return call_user_func_array("\Utils\Helpers::$helper", array_slice(func_get_args(), 1));
}
public static function number($s, $dec = 0) {
return number_format($s, $dec, '', "\xe2\x80\x87");
}
public static function number2($s, $dec = 0) {
return number_format($s, $dec, '', "\xe2\x80\x87");
}
}
kterou načítám v BasePresenteru takhle,
$this->template->addFilter(NULL, ['\Utils\Helpers', 'loader']);
tak pokud použiju v šabloně |number2, tak se to formátuje tak jak chci já, pokud ale použiju |number (který by měl přepisovat výchozí Nette implementaci), tak to použiuje výchozí Nette helper.
Pokud ale napíšu do BasePresenteru manuální načtení toho helperu na číslo takto,
$this->template->addFilter('number', function($s, $dec = 0) { return number_format($s, $dec, ',', "\xe2\x80\x87"); });
tak překrytí Nette helperu funguje v pořádku.
Na verzi 2.1.X mi normálně překrývání helperů fungovalo i přes Helper Loader, po aktualizaci na 2.2.1 mi to začalo dělat tohle. Opomíjím někde něco, nebo se jedná o bug? Díky za rady.