intaro / twig-injection-bundle
TwigInjectionBundle 允许通过事件行为注入 Twig 模板
v2.2.0
2022-11-01 12:25 UTC
Requires
- php: >=7.1.3
- symfony/event-dispatcher: ^3.4|^4.4|^5.0|^6.0
- symfony/framework-bundle: ^3.4|^4.4|^5.0|^6.0
- symfony/http-kernel: ^3.4|^4.4|^5.0|^6.0
- symfony/twig-bridge: ^3.4|^4.4|^5.0|^6.0
- symfony/twig-bundle: ^3.4|^4.4|^5.0|^6.0
- symfony/yaml: ^3.4|^4.4|^5.4|^6.0
README
TwigInjectionBundle 允许通过事件行为注入 Twig 模板。
安装
TwigInjectionBundle 需要 Symfony 3.4 或更高版本。
在 composer.json
文件中要求此包
{ "require": { "intaro/twig-injection-bundle": "^2.0" } }
在 AppKernel
中注册包
// app/AppKernel.php public function registerBundles() { $bundles = [ //... new Intaro\TwigInjectionBundle\IntaroTwigInjectionBundle(), ]; //... }
安装包
$ composer update intaro/twig-injection-bundle
使用方法
- 在模板中添加
{{ inject() }}
调用
{{ inject('twig.injection.event.name', { parameter1: 'some-value', parameter2: some_object }) }}
-
准备您想渲染的控制器动作或您想包含的模板
-
定义将注入
include
或render
调用的监听器
<?php namespace Acme\DemoBundle\EventListener; use Intaro\TwigInjectionBundle\Event\TwigInjectEvent; use Intaro\TwigInjectionBundle\Event\TwigInjectRender; class TwigInjectionListener { public function onSomeEvent(TwigInjectEvent $event) { $parameters = $event->getParameters(); if (!isset($parameters['parameter1']) || 'some-value' !== $parameters['parameters1']) { return; } $render = new TwigInjectRender( 'AcmeDemoBundle:DefaultController:index', [ 'object' => $parameters['parameters2'] ] ); $event->addInjection($render); $include = new TwigInjectInclude('AcmeDemoBundle:Default:someTemplate.html.twig'); $event->addInjection($include); } }
- 注册监听器
services: acme_demo.twig_injection.listener: class: Acme\DemoBundle\EventListener\TwigInjectionListener tags: - { name: kernel.event_listener, event: twig.injection.event.name, method: onSomeEvent }