如何配置和使用模板服务

3.4 版本
维护中的版本

Symfony模板系统的核心是模板化Engine。这个特殊的对象负责渲染模板并返回它们正确的内容。当你在控制器中渲染一个模板时,其实你是使用了模板引擎服务。例如:

1
return $this->render('article/index.html.twig');

相当于

1
2
3
4
5
6
use Symfony\Component\HttpFoundation\Response;
 
$engine = $this->container->get('templating');
$content = $engine->render('article/index.html.twig');
 
return $response = new Response($content);

该模板引擎(服务)在Symfony内部是预先配置好,自动工作的。当然,它也可以在程序的配置文件中进行配置。

1
2
3
4
# app/config/config.yml
framework:
    # ...
    templating: { engines: ['twig'] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:framework="http://symfony.com/schema/dic/symfony"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
        http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
 
    <!-- ... -->
    <framework:config>
        <framework:templating>
            <framework:engine>twig</framework:engine>
        </framework:templating>
    </framework:config>
</container>
1
2
3
4
5
6
7
8
// app/config/config.php
$container->loadFromExtension('framework', array(
    // ...
 
    'templating' => array(
        'engines' => array('twig'),
    ),
));

还有几个配置选项是可用的,都包含在配置附录

twig强制使用webprofiler(以及许多第三方包)。

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)