alexmasterov / equip-twig
Equip框架的Twig集成
3.1.0
2017-01-07 16:27 UTC
Requires
- php: ^7.0 || ^7.1
- equip/framework: 3.0.0-alpha1
- twig/twig: ^2.0
Suggests
- alexmasterov/twig-extension: For a custom extensions
- josegonzalez/dotenv: For environment based configuration loading
This package is not auto-updated.
Last update: 2024-09-24 13:56:31 UTC
README
安装
建议的安装方法是通过composer
composer require alexmasterov/equip-twig:^2.0
配置
要使用TwigFormatter
实现,您需要将TwigResponderConfiguration
添加到应用程序引导
Equip\Application::build() ->setConfiguration([ // ... AlexMasterov\EquipTwig\Configuration\TwigResponderConfiguration::class ]) // ...
设置Twig环境
默认配置,通过依赖注入器
// src/Configuration/TwigConfiguration.php namespace Acme\Configuration; use Auryn\Injector; use Equip\Env; use Equip\Configuration\ConfigurationInterface; use AlexMasterov\EquipTwig\Configuration\TwigResponderConfiguration; class TwigConfiguration implements ConfigurationInterface { public function apply(Injector $injector) { $twigEnv = new Env([ 'TWIG_TEMPLATES' => __DIR__.'/../Resources/templates', 'TWIG_CACHE' => __DIR__.'/../../var/cache/twig', 'TWIG_DEBUG' => false, 'TWIG_AUTO_RELOAD' => true, 'TWIG_STRICT_VARIABLES' => false, 'TWIG_FILE_EXTENSIONS' => 'html.twig,twig' ]); $injector->define(TwigResponderConfiguration::class, [ ':env' => $twigEnv ]); } }
Equip\Application::build() ->setConfiguration([ // ... Acme\Configuration\TwigConfiguration::class, AlexMasterov\EquipTwig\Configuration\TwigResponderConfiguration::class ]) // ...
可选配置,通过一个.env
文件
TWIG_TEMPLATES = "../Resources/templates" TWIG_CACHE = "../var/cache/twig" TWIG_DEBUG = false TWIG_AUTO_RELOAD = true TWIG_STRICT_VARIABLES = false TWIG_FILE_EXTENSIONS = "html.twig,twig"
用法
基本示例
namespace Acme\Domain; use Equip\Adr\DomainInterface; use Equip\Adr\PayloadInterface; class WidgetDomain implements DomainInterface { /** * @var PayloadInterface */ private $payload; public function __construct(PayloadInterface $payload) { $this->payload = $payload; } public function __invoke(array $input) { return $this->payload ->withStatus(PayloadInterface::STATUS_OK) ->withSetting('template', 'widget.html.twig') ->withOutput([ 'message' => 'Just do it!' ]); } }
使用PayloadRenderTrait
作为常规render
方法的包装器
// ... use AlexMasterov\EquipTwig\Payload\PayloadRenderTrait; class WidgetDomain implements DomainInterface { use PayloadRenderTrait; public function __invoke(array $input) { $message = 'Just do it!'; return $this->render('widget.html.twig', compact('message')); } }