Object 在另一个细枝属性定义的值内插入细枝变量/属性
以以下结构为例:Object 在另一个细枝属性定义的值内插入细枝变量/属性,object,twig,interpolation,templating,templating-engine,Object,Twig,Interpolation,Templating,Templating Engine,以以下结构为例: {% set paths = { ... 'js': { ... 'jquery': { 'version': '1.7.2', 'cdn': '
{% set paths = {
...
'js': {
...
'jquery': {
'version': '1.7.2',
'cdn': 'https://ajax.googleapis.com/ajax/libs/jquery/{{paths.js.jquery.version}}/jquery.min.js',
'fallback': ....
}
}
}
%}
要访问,我通常会使用以下内容:
<script src="{{paths.js.jquery.cdn}}"></script>
只需要一个层次就可以了,但不是任意的深度层次。如果我误解了attribute()
'a':('text'~b~'text'
)实际上是正确的,请纠正我,但是表达式周围不能有大括号(因为我们已经在表达式、变量定义中)
正确的方法是:
{% set paths = {
...
'js': {
...
'jquery': {
'version': '1.7.2',
'cdn': ('https://ajax.googleapis.com/ajax/libs/jquery/' ~ paths.js.jquery.version ~ '/jquery.min.js'),
'fallback': ....
}
}
}
%}
但这里有一个简单的设计错误;当呈现器/解析器进入
cdn
属性定义时,路径
尚未设置。解决这个问题的一个可能方法是首先声明另一个变量
{% set params= {
'jqueryversion': '1.7.2'
}
%}
{% set paths = {
...
'js': {
...
'jquery': {
'cdn': ('https://ajax.googleapis.com/ajax/libs/jquery/' ~ params.jqueryversion ~ '/jquery.min.js'),
'fallback': ....
}
}
}
%}
显然,如果path.js.jquery.cdn
只使用一次,则只需在需要的地方硬编码父变量的值,并插入子变量:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/{{params.jqueryversion}}/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/{{params.jqueryversion}}/jquery.min.js"></script>