nepada/template-factory

此包已被放弃且不再维护。未建议替代包。

强大的Latte模板工厂。

v2.8.1 2022-05-19 18:37 UTC

README

Build Status Coverage Status Downloads this Month Latest stable

包已废弃

此包被认为已过时并被放弃。自本包发布以来,Nette和Latte已经发生了很大变化。现在可以通过Latte 3扩展和TemplateFactory::$onCreate回调组合来替代本包的功能。

安装

通过Composer

$ composer require nepada/template-factory

config.neon中注册扩展

extensions:
    templateFactory: Nepada\Bridges\TemplateFactoryDI\TemplateFactoryExtension

使用

自动注入翻译器

谁想在每个模板上手动调用setTranslator()?使用此模板工厂,您只需在配置中定义ITranslator服务,它就会自动注入到创建的模板中。

自定义Latte过滤器

您需要在模板中使用自定义Latte过滤器吗?它们的定义非常简单

templateFactory:
    filters:
        doStuff: [@someService, doStuff]

模板参数

这是回答“如何将参数/服务从DI容器传入模板?”的终极答案

templateFactory:
    parameters:
        foo: bar
        service: @anotherService
        containerParam: %param%

模板提供者

与参数类似,您也可以设置latte提供者

templateFactory:
    providers:
        foo: bar
        service: @anotherService
        containerParam: %param%

自定义模板函数

与过滤器类似,您也可以为自定义模板函数定义回调

templateFactory:
    functions:
        doStuff: [@someService, doStuff]

从另一个CompilerExtension配置

某些扩展可能需要在安装Latte过滤器或向模板注入参数/服务。这可以通过在beforeCompile()阶段自定义TemplateConfigurator的设置来完成。

$templateConfigurator = $containerBuilder->getByType(Nepada\TemplateFactory\TemplateConfigurator::class);
$containerBuilder->getDefinition($templateConfigurator)
    ->addSetup('addFilter', ['filterName', $callback])
    ->addSetup('addFunction', ['functionName', $callback])
    ->addSetup('addProvider', ['provider', $value])
    ->addSetup('addParameter', ['parameter', $value])
    ->addSetup('addParameter', ['parameter', '@someService']);