gpt4 book ai didi

Twig 变量中的 Twig 变量

转载 作者:行者123 更新时间:2023-12-03 14:32:28 24 4
gpt4 key购买 nike

我有一个 Twig 变量 html .为了在 Twig 模板中显示它,我会做 {{html}} .

该变量如下所示:
<div>{{region_top}}</div><div>{{region_center}}</div>region_*也是一个变量。当 Twig 解析我的 html变量,它不解析内部变量(区域)。

我该做什么?

最佳答案

I have twig variable html. To show it in twig template I do {{html}}. That variable look like {{region_top}}{{region_center}}. region_* is variables too. When twig parse my html variable he didn't parse inner variables (regions). What can I should do?



Twig 将您的字符串作为文字字符串,这意味着您将看到已转义的变量内容。如果您希望它也能够显示 {{region_top}},我建议您这样做:
{{html|replace({'{{region_top}}': region_top, '{{region_center}}': region_center})}}

如果您的 html 变量的内容也是动态的(这意味着它可以包含的不仅仅是这两个变量),我会编写一个可以执行您想要的操作的 twig 插件。编写插件很容易做到。

编辑 : 这是我刚写完的扩展。

编辑 2 :扩展现在使用环境来呈现字符串,因此它评估字符串,而不是仅仅替换变量。这意味着您的变量可以包含模板可以包含的任何内容,并且它将由 Twig 本身呈现和转义。我真棒。

<?php

/**
* A twig extension that will add an "evaluate" filter, for dynamic evaluation.
*/
class EvaluateExtension extends \Twig_Extension {
/**
* Attaches the innervars filter to the Twig Environment.
*
* @return array
*/
public function getFilters( ) {
return array(
'evaluate' => new \Twig_Filter_Method( $this, 'evaluate', array(
'needs_environment' => true,
'needs_context' => true,
'is_safe' => array(
'evaluate' => true
)
))
);
}

/**
* This function will evaluate $string through the $environment, and return its results.
*
* @param array $context
* @param string $string
*/
public function evaluate( \Twig_Environment $environment, $context, $string ) {
$loader = $environment->getLoader( );

$parsed = $this->parseString( $environment, $context, $string );

$environment->setLoader( $loader );
return $parsed;
}

/**
* Sets the parser for the environment to Twig_Loader_String, and parsed the string $string.
*
* @param \Twig_Environment $environment
* @param array $context
* @param string $string
* @return string
*/
protected function parseString( \Twig_Environment $environment, $context, $string ) {
$environment->setLoader( new \Twig_Loader_String( ) );
return $environment->render( $string, $context );
}

/**
* Returns the name of this extension.
*
* @return string
*/
public function getName( ) {
return 'evaluate';
}
}

示例用法:

$twig_environment->addExtension( new EvaluateExtension( ) );

在模板中:
{% set var = 'inner variable' %}
{{'this is a string with an {{var}}'|evaluate}}

关于 Twig 变量中的 Twig 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com