glaubinix/symfony-template-response

此包已被废弃,不再维护。未建议替代包。

symfony 模板响应 silex

3.1 2018-01-07 14:01 UTC

This package is auto-updated.

Last update: 2022-05-02 14:17:27 UTC


README

构建状态: Build Status

使用 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 构建简单版本的原因。