zeliard91/twigstring-bundle

使用Twig渲染字符串而非文件

安装量: 11,454

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 18

类型:symfony-bundle

v1.1.0 2017-11-02 11:14 UTC

This package is auto-updated.

Last update: 2024-09-10 21:18:56 UTC


README

Build Status

此Symfony2 Bundle允许使用Symfony2原生的Twig模板引擎渲染字符串而不是文件。该Bundle添加了一个名为twigstring的额外服务。它使用方式和原始模板服务相同。唯一的区别是,方法render(<string>, [<array>)的第一个参数是一个要解析的字符串,而不是模板文件。

该Bundle支持变量输出、条件、循环以及控制器渲染。它目前不支持包含模板,它将把模板名称解释为twigstring。

一个使用场景示例是从数据库加载模板而不是使用文件。

扩展想法

  • 包含模板的选项
  • 添加黑白名单以允许允许的twig标签

安装

1. 在composer中注册bundle

您需要将其添加到您的composer.json需求中

{
    "require": {
         "zeliard91/twigstring-bundle": "~1.0"
    }
}

2. 从packagist下载bundle

通过运行以下命令进行安装

$ ./composer.phar update zeliard91/twigstring-bundle

3. 在kernel中注册bundle

<?php
// app/AppKernel.php

public function registerBundles() {
    $bundles = array(
        // ...
        new LK\TwigstringBundle\LKTwigstringBundle(),
        // ...
    );
}

4. 在配置中注册bundle

# app/config/config.yml
lk_twigstring:
    # Decide if you want that all registered twig extensions must be loaded
    load_twig_extensions: true # (default to true)

5. 添加所需的额外扩展(可选)

# app/config/services.yml
services:
    twigstring.extension.foo:
        class: Foo\BarBundle\Twig\FooBarExtension
        tags:
            - { name: twigstring.extension }

有关可用扩展的列表,请参阅fabpot/Twig-extensions或使用Symfony Cookbooktwig文档创建一个。

使用

// set example parameter
$vars = array('var'=>'x');

// get twigstring service
$tpl_engine = $this->get('twigstring');

// render example string
$vars['test'] = 'u ' . $tpl_engine->render('v {{ var }} {% if var is defined %} y {% endif %} z{% for i in 1..5 %} {{ i }}{% endfor %}', $vars);

或使用简短方式

// set example parameter
$vars = array('var'=>'x');

// render example string
$vars['test'] = 'u ' . $this->get('twigstring')->render('v {{ var }} {% if var is defined %} y {% endif %} z{% for i in 1..5 %} {{ i }}{% endfor %}', $vars);

示例输出

u v x y z

许可证

该Bundle受MIT许可证的许可。有关完整许可证,请参阅LICENSE文件

作者

LarsK (Lars Krüger), cordoval (Luis Cordova), r1pp3rj4ck (Attila Bukor), zeliard91 (Damien Matabon)