glaubinix / symfony-template-response
此包已被废弃,不再维护。未建议替代包。
symfony 模板响应 silex
3.1
2018-01-07 14:01 UTC
Requires
- symfony/http-foundation: ^2.3|^3.0|^4.0
- symfony/templating: ^2.3|^3.0|^4.0
Requires (Dev)
- fabpot/php-cs-fixer: ^2.9
- phpunit/phpunit: ^6.5
- silex/silex: ^2.0
Suggests
- symfony/twig-bridge: Allows the usage of twig with the TwigEngine
README
使用 TemplateResponse 帮助您构建与特定框架无关的控制器。在 Symfony/Silex 的情况下,这通常意味着不要将 ServiceContainer/Application 注入到控制器中。
安装
安装此库的最简单方法是使用 Composer。将包 "glaubinix/symfony-template-response" 添加到您的 composer.json 文件中。
{ "require": { "glaubinix/symfony-template-response": "@stable" } }
使用
要使用 TemplateResponse,只需注册监听器即可。
与 symfony 框架包一起使用
如果您正在使用框架包,只需将其添加到您的服务配置中即可。
<service id="template_response.view_listener" class="Glaubinix\TemplateResponse\TemplateResponseListener%"> <argument type="service" id="templating" /> <tag name="kernel.event_listener" event="kernel.view" method="onKernelResponse" priority="10" /> </service>
与 silex 和 twig 一起使用
如果您正在使用 silex,请确保已注册模板引擎,然后注册此库提供的 ServiceProvider。
// In a Provider define the templating engine $app['templating'] = function(Container $app) { return new Symfony\Bridge\Twig\TwigEngine($app['twig'], new \Symfony\Component\Templating\TemplateNameParser()); }; // Register the provider $app->register(new Glaubinix\TemplateResponse\Silex\TemplateResponseServiceProvider()); // Use the response in $app->get('/', function() { return new TemplateResponse('template', []); });
注意
为了完全从框架中解耦,TemplateResponse 不需要继承 Symfony Response,而是替换响应而不是简单地渲染内容。完成此操作后,每个框架的专用 ResponseListener 将允许在所有框架中使用。
维护听起来很痛苦,我实在看不到这种情况发生 :)
原始想法
第一次看到这个想法是在 QafooLabsNoFrameworkBundle 中,实现略有不同,并依赖于 symfony 框架包,这也是我主要为 silex 构建简单版本的原因。