将TWIG转换为PHP语法 {%if i.status%} {{text_enabled}} {{text_disabled}} {%else%} {{text_enabled}} {{text_disabled}} {%endif%} {%set list\u row=list\u row+1%} {%endfor%} {%endif%}
对于上面的代码“Select”,我应该如何将其转换为php语法 设置列表行=列表行+1也一样?%是什么意思将TWIG转换为PHP语法 {%if i.status%} {{text_enabled}} {{text_disabled}} {%else%} {{text_enabled}} {{text_disabled}} {%endif%} {%set list\u row=list\u row+1%} {%endfor%} {%endif%},php,twig,Php,Twig,对于上面的代码“Select”,我应该如何将其转换为php语法 设置列表行=列表行+1也一样?%是什么意思 PHP和Twig的语法没有太大区别。Twig提供了PHP的纯模板透视图,以帮助您的模板摆脱业务逻辑,并提供诸如HTML实体和Javascript的自动转义,以及静默忽略未定义的变量、数组索引或对象方法/属性等功能,类似于PHP中的?(null coalesce)操作符 我强烈建议您花一天的时间学习Twig的有限语法。版本1、2和3之间存在细微的差异。很好地解释了细枝是如何工作的 树枝输出
PHP和Twig的语法没有太大区别。Twig提供了PHP的纯模板透视图,以帮助您的模板摆脱业务逻辑,并提供诸如HTML实体和Javascript的自动转义,以及静默忽略未定义的变量、数组索引或对象方法/属性等功能,类似于PHP中的
?
(null coalesce)操作符
我强烈建议您花一天的时间学习Twig的有限语法。版本1、2和3之间存在细微的差异。很好地解释了细枝是如何工作的
树枝输出
<td class="text-left">
<select name="product[{{ list_row }}][status]" id="input-status" class="form-control">
{% if i.status %}
<option value="1" selected="selected">{{ text_enabled }}</option>
<option value="0">{{ text_disabled }}</option>
{% else %}
<option value="1">{{ text_enabled }}</option>
<option value="0" selected="selected">{{ text_disabled }}</option>
{% endif %}
</select>
</td>
<td class="text-left">
<button id="button_cancel" type="button" onclick="$('#product_row_{{ list_row }}').remove()" data-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger">
<i class="fa fa-minus-circle"></i>
</button>
</td>
</tr>
{% set list_row = list_row + 1 %}
{% endfor %}
{% endif %}
相当于
{% set var = 'value' %}
$var = ['property' => 'value'];
echo htmlspecialchars(($var['property'] ?? null), ENT_QUOTES, 'UTF-8'); //PHP 7.0+
echo htmlspecialchars((array_key_exists('property', $var) ? $var['property'] : null), ENT_QUOTES, 'UTF-8'); //PHP < 7.0
细枝变量声明
{{ var|e }}
相当于
{% set var = 'value' %}
$var = ['property' => 'value'];
echo htmlspecialchars(($var['property'] ?? null), ENT_QUOTES, 'UTF-8'); //PHP 7.0+
echo htmlspecialchars((array_key_exists('property', $var) ? $var['property'] : null), ENT_QUOTES, 'UTF-8'); //PHP < 7.0
因此,{{}
可以被认为是打印输出的快捷方式
,或者更确切地说是
其中,
{%%}
是打开和关闭细枝语句分隔符,可以认为类似于打开和关闭PHP语句分隔符
需要注意的是,twig没有访问PHP全局或命名空间的权限。因此类似于
的内容在twig中的处理方式有所不同,例如本例{%fori,var in vars%}
细枝变量访问
{{ var|e }}
Twig还能够使用相同语法访问关联数组键和对象属性var.property
,并能够自动调用对象的get
、is
和has
方法
如果var
是一个数组,{{{var.property}
相当于
{% set var = 'value' %}
$var = ['property' => 'value'];
echo htmlspecialchars(($var['property'] ?? null), ENT_QUOTES, 'UTF-8'); //PHP 7.0+
echo htmlspecialchars((array_key_exists('property', $var) ? $var['property'] : null), ENT_QUOTES, 'UTF-8'); //PHP < 7.0
缺少模板的某些部分。例如模板变量和
if
和的开头,用于。。。在
块中。为了提供一个更完整的示例,我包含了一些关于变量和开头的if
和foreach
语句的断言
要将您提供的细枝模板转换为PHP,它看起来与下面的类似
class Var
{
private $property = 'value';
public function getProperty()
{
return $property;
}
}
$var = new Var();
if (isset($var->property)) {
echo htmlspecialchars($var->property, ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'property'])) {
echo htmlspecialchars($var->property(), ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'getProperty'])) {
echo htmlspecialchars($var->getProperty(), ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'isProperty'])) {
echo htmlspecialchars($var->isProperty(), ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'hasProperty'])) {
echo htmlspecialchars($var->hasProperty(), ENT_QUOTES, 'UTF-8');
} else {
echo null;
}
PHP和Twig的语法没有太大区别。Twig提供了PHP的纯模板透视图,以帮助您的模板摆脱业务逻辑,并提供诸如HTML实体和Javascript的自动转义,以及静默忽略未定义的变量、数组索引或对象方法/属性等功能,类似于PHP中的?
(null coalesce)操作符
我强烈建议您花一天的时间学习Twig的有限语法。版本1、2和3之间存在细微的差异。很好地解释了细枝是如何工作的
树枝输出
<td class="text-left">
<select name="product[{{ list_row }}][status]" id="input-status" class="form-control">
{% if i.status %}
<option value="1" selected="selected">{{ text_enabled }}</option>
<option value="0">{{ text_disabled }}</option>
{% else %}
<option value="1">{{ text_enabled }}</option>
<option value="0" selected="selected">{{ text_disabled }}</option>
{% endif %}
</select>
</td>
<td class="text-left">
<button id="button_cancel" type="button" onclick="$('#product_row_{{ list_row }}').remove()" data-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger">
<i class="fa fa-minus-circle"></i>
</button>
</td>
</tr>
{% set list_row = list_row + 1 %}
{% endfor %}
{% endif %}
相当于
{% set var = 'value' %}
$var = ['property' => 'value'];
echo htmlspecialchars(($var['property'] ?? null), ENT_QUOTES, 'UTF-8'); //PHP 7.0+
echo htmlspecialchars((array_key_exists('property', $var) ? $var['property'] : null), ENT_QUOTES, 'UTF-8'); //PHP < 7.0
细枝变量声明
{{ var|e }}
相当于
{% set var = 'value' %}
$var = ['property' => 'value'];
echo htmlspecialchars(($var['property'] ?? null), ENT_QUOTES, 'UTF-8'); //PHP 7.0+
echo htmlspecialchars((array_key_exists('property', $var) ? $var['property'] : null), ENT_QUOTES, 'UTF-8'); //PHP < 7.0
因此,{{}
可以被认为是打印输出的快捷方式
,或者更确切地说是
其中,{%%}
是打开和关闭细枝语句分隔符,可以认为类似于打开和关闭PHP语句分隔符
需要注意的是,twig没有访问PHP全局或命名空间的权限。因此类似于
的内容在twig中的处理方式有所不同,例如本例{%fori,var in vars%}
细枝变量访问
{{ var|e }}
Twig还能够使用相同语法访问关联数组键和对象属性var.property
,并能够自动调用对象的get
、is
和has
方法
如果var
是一个数组,{{{var.property}
相当于
{% set var = 'value' %}
$var = ['property' => 'value'];
echo htmlspecialchars(($var['property'] ?? null), ENT_QUOTES, 'UTF-8'); //PHP 7.0+
echo htmlspecialchars((array_key_exists('property', $var) ? $var['property'] : null), ENT_QUOTES, 'UTF-8'); //PHP < 7.0
缺少模板的某些部分。例如模板变量和if
和的开头,用于。。。在
块中。为了提供一个更完整的示例,我包含了一些关于变量和开头的if
和foreach
语句的断言
要将您提供的细枝模板转换为PHP,它看起来与下面的类似
class Var
{
private $property = 'value';
public function getProperty()
{
return $property;
}
}
$var = new Var();
if (isset($var->property)) {
echo htmlspecialchars($var->property, ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'property'])) {
echo htmlspecialchars($var->property(), ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'getProperty'])) {
echo htmlspecialchars($var->getProperty(), ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'isProperty'])) {
echo htmlspecialchars($var->isProperty(), ENT_QUOTES, 'UTF-8');
} elseif (is_callable([$var, 'hasProperty'])) {
echo htmlspecialchars($var->hasProperty(), ENT_QUOTES, 'UTF-8');
} else {
echo null;
}
奇怪的是,为什么你想把Twig转换成PHP,而不是使用Twig模板呢?Twig有很多有用的特性来制作模板,比如{%extends%}
,并有助于使模板不受业务逻辑的影响。它绝对值得学习。是的,我想学习,因为它对我来说是新的,但我被传递到这个项目,由于语法的原因无法继续进行增强,这会减慢项目的速度。你可以在这里转换你的twig代码:好奇的是,你为什么要将twig转换为PHP,而不是使用twig模板?Twig有很多有用的特性来制作模板,比如{%extends%}
,并有助于使模板不受业务逻辑的影响。这绝对值得学习。是的,我想学习,因为这对我来说是新的,但我被转到了这个项目,由于语法原因无法继续进行增强,这会减慢项目的速度。你可以在这里转换你的细枝代码: