Registrace filtru – Undefined filtr

kolibla
Člen | 25
+
0
-

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
+
0
-

Ahoj, myslim, ze ti chybi registrace toho filtru do Latte.

Mrkni treba zde https://github.com/…xtension.php.

kolibla
Člen | 25
+
0
-

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.