Registrace filtru – Undefined filtr
- kolibla
- Člen | 25
Ahoj,
chtěla bych se zeptat, co dělám špatně ohledně latte filtru, můj postup je následující:
1) Samotná třída s jednoduchou implementací
class IncludeFileVersion
{
/**
* @param string
* @return string
*/
public function includeVersion($filename): string
{
if (is_file($filename))
{
$filename .= '?v=' . filemtime($filename);
}
return $filename;
}
}
2) HelperExtension.php
class HelpersExtension extends Nette\DI\CompilerExtension
{
public function beforeCompile()
{
$builder = $this->getContainerBuilder();
$builder->addDefinition($this->prefix('includeFileVersion'))
->setFactory('App\Helpers\Latte\IncludeFileVersion')
->addSetup('addFilter',[
'includeVersion', [
'@' . $this->prefix('includeFileVersion'), 'includeVersion'
]
]);
}
}
3) config.neon
extensions:
helpers: App\Helpers\Latte\DI\HelpersExtension
4) Poté když zavolám někde v latte:
<link href="{$basePath.'/css/style.min.css'|includeVersion}" rel="stylesheet">
Výsledek je:
LogicException
Filter 'includeversion' is not defined
Co bych měla udělat jinak? Jinak registraci bych chtěla provádět takto, nikoliv přes config.neon.
Děkuji.
- Felix
- Nette Core | 1247
Ahoj, myslim, ze ti chybi registrace toho filtru do Latte.
Mrkni treba zde https://github.com/…xtension.php.
- kolibla
- Člen | 25
https://github.com/…xtension.php
Použila jsem tedy vaše řešení odsud. Stále to vyhazuje stejnou
hlášku, nicméně filtry to bere dle toho úryvku:
$filters = $builder->findByType(FiltersProvider::class);
Nyní mám v configu.php
extensions:
filters: Contributte\Latte\DI\FiltersExtension
Co mám tedy teď udělat, abych zajistila ten bod 1) a dle toho se mi ten filtr sestavil?
Děkuji.