TWIG:如何解析自定义标签?

时间:2017-01-04 05:33:09

标签: twig symfony template-engine

在TWIG模板引擎中,解析内容的最佳方法如下:

[name="tom"]
    Lorem ipsum dolor <strong>sit amet</strong>, 
    consectetur adipiscing elit, 
    sed do eiusmod tempor incididunt
[/name]

成像:

<blockquote>
    Lorem ipsum dolor <strong>sit amet</strong>, 
    consectetur adipiscing elit, 
    sed do eiusmod tempor incididunt
</blockquote>

还可以获取 name 属性的值。在上面给出的示例中,属性名称的值为 tom 。建议?

1 个答案:

答案 0 :(得分:1)

我最终使用Twig_SimpleFunction()方法创建自定义TWIG函数(扩展名)。

/**
 * @var $html STRING FROM THE POST
 * @return $string RETURN AS STRING
 */
public function toBlockQuotedFormat($html) {

    $re = '/(.*?)\[name=(.*?)\]/';
    preg_match_all($re, $html, $matches);

    if(isset($matches[2][0])) {

        $name = $matches[2][0];
        // CONVERT THE NAME-TAG TO BLOCKQUOTE
        $html = str_replace("[name=".$name."]", "<blockquote>", $html);
        $html = str_replace("[/name]", "</blockquote>", $html);
    }

    return $html;
}

然后我可以使用{{ toBlockQuotedFormat(theHtmlVar|nl2br)|raw }}将其解析为所需的<blockquote></blockquote>标记。我也有$name值;但是在这种情况下,除了str_replace函数之外,我没有使用它。