cethyworks/content-injector-bundle
最新稳定版本:v5.0
Composer 安装命令:
composer require cethyworks/content-injector-bundle
包简介
Allow content injection before the app send the response to the client.
README 文档
README
Allow effective content injection before the app sends the response to the client.
It uses a global subscriber which will inject content from collected InjectorCommands when kernel.response event is fired.
The InjectorCommands can be a simple callable returning a string or be as complex as a rendered twig template with data.
The bundle provides helpers to inject simple text, twig templates and FormView aware commands.
Install
composer require cethyworks/content-injector-bundle
AppKernel.php
class AppKernel extends Kernel
{
registerBundles()
{
return [
// ...
new Cethyworks\ContentInjectorBundle\CethyworksContentInjectorBundle()
];
}
}
How to use
The global subscriber is configured out of the box.
You just need to register one or more InjectorCommand :
$subscriber = $container->get(ContentInjectorSubscriber::class);
$subscriber->regiterCommand(function(){ return 'inject_me'; });
With twig template
$commandHandler = $container->get(TwigCommandHandler::class);
$commandHandler->registerCommand('@AppBundle\Resources/assets/twig/foo.html.twig', ['foo' => 'bar']);
With FormType
The bundle provides a TypeExtension "extending" FormType (virtually all forms) adding a injector option allowing the configuration of an injector aware of the FormType's FormView. It ca be used like this :
AppInjectJsType.php
class AppInjectJsType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'injector' => [
'template' => '@AppBundle/Resources/assets/twig/app_inject_js_type.html.twig' ]
));
}
public function getBlockPrefix()
{
return 'my_form_id';
}
public function getParent()
{
return EntityType::class;
}
}
app_inject_js_type.html.twig
<script>
var formId = "{{ form_view.vars['id'] }}";
// do something to your form
</script>
What's in the box ?
EventSubscriber
Cethyworks\ContentInjectorBundle\EventSubscriber\ContentInjectorSubscriber($injector)
Collects InjectorCommands, execute and inject them into the Response when kernel.response event is fired.
Commands
Cethyworks\ContentInjectorBundle\Command\CommandInterface
Command interface.
Cethyworks\ContentInjectorBundle\Command\TextCommand($text)
Simple Text Command.
Cethyworks\ContentInjectorBundle\Command\TwigCommand($twig)->setTemplate($template)->setData($data)
Twig Command, render $template with $data.
FormExtension
Cethyworks\ContentInjectorBundle\Form\Extension\InjectorAwareTypeExtension($commandFactory, $responseSubscriber)
Enable the injector form option.
@see section How to / With Form" ""Type above.
Factories
Cethyworks\ContentInjectorBundle\Command\Factory\TwigFormCommandFactory
Used internally by InjectorAwareTypeExtension, create TwigCommands aware of FormView.
Injectors
Cethyworks\ContentInjectorBundle\Injector\InjectorInterface
Injector interface.
Cethyworks\ContentInjectorBundle\Injector\BodyEndInjector
Injects just before </body> tag.
Test helper
Cethyworks\ContentInjectorBundle\Test\InjectorTypeTestCase
Command Handler
Cethyworks\ContentInjectorBundle\Command\Handler\TwigCommandHandler
Shorcut service to create & register a TwigCommand.
Extends TypeTestCase and initialize the InjectorAwareTypeExtension extension.
统计信息
- 总下载量: 11.26k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 0
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-07-06