id 属性 内的 TALES 表达式
TALES expression inside id property
我正在尝试使用 tal-repeat
在克隆模板上动态创建复选框。查看下面的代码了解详情。
<div tal:define="global pessoa python:view.dados_pessoa()" class="drop-element"></div>
<div class="row m-t-10" tal:repeat="telefone python: pessoa.get('telefones', [])">
<input type="hidden" class="idTelefone" name="telefones.id" value="${python: telefone.get('id', '')}" />
<div class="col s3 grey-text text-darken-1">
<input class="grey-text text-darken-1 tipoTelefone" type="text" name="telefones.tipo" value="${python: telefone.get('tipo', '').capitalize()}" autoComplete="off" readonly />
</div>
<div class="col s5">
<input class="grey-text text-darken-1 numeroTelefone" type="text" name="telefones.numero" value="${python: '(%s) %d' % (telefone.get('ddd', ''), telefone.get('numero', ''))}" autoComplete="false" readonly/>
</div>
<div class="col s2">
<input type="checkbox" id="${python: telefone.get('id', '')}" name="telefones.sms" ${python: 'checked' if telefone.get('sms', '') else ''}>
<label for="${python: telefone.get('id', '')}" class="active fix-label" style="top: 25px !important">SMS</label>
</div>
<div class="input-field m-t-10 col s2">
<button type="button" class="sp_btn right red m-t-05 btn-remover-telefone">Remover</button>
</div>
</div>
简单来说,pessoa['telefones']
是一个列表,可以包含0个或多个词典。
这里的重点是:
<input type="checkbox" id="${python: telefone.get('id', '')}" name="telefones.sms" ${python: 'checked' if telefone.get('sms', '') else ''}>
<label for="${python: telefone.get('id', '')}" class="active fix-label" style="top: 25px !important">SMS</label>
由于我的 plone 站点使用 materialize,我需要通过 id 将标签连接到复选框,否则它不会显示。听起来它会起作用,因为 telefone
上的每个索引都有一个唯一的 ID。问题在于,当它呈现时,ID 属性 呈现为 TALES 表达式的字符串而不是表达式结果,如下所示:
<input type="checkbox" id="${python: telefone.get('id', '')}" name="telefones.sms">
<label for="2138518" class="active fix-label" style="top: 25px !important">SMS</label>
为什么?我怎样才能解决它?尽我所能搜索,但找不到解决方案。
您使用的是什么 Plone 版本?我不存在像 ${} 这样的早期版本表达式。
应该一直有效的是这样的:
<input type="checkbox" tal:attributes="id python: telefone.get('id', '')"> name="telefones.sms">
希望对你有所帮助,Maik 干杯
我正在尝试使用 tal-repeat
在克隆模板上动态创建复选框。查看下面的代码了解详情。
<div tal:define="global pessoa python:view.dados_pessoa()" class="drop-element"></div>
<div class="row m-t-10" tal:repeat="telefone python: pessoa.get('telefones', [])">
<input type="hidden" class="idTelefone" name="telefones.id" value="${python: telefone.get('id', '')}" />
<div class="col s3 grey-text text-darken-1">
<input class="grey-text text-darken-1 tipoTelefone" type="text" name="telefones.tipo" value="${python: telefone.get('tipo', '').capitalize()}" autoComplete="off" readonly />
</div>
<div class="col s5">
<input class="grey-text text-darken-1 numeroTelefone" type="text" name="telefones.numero" value="${python: '(%s) %d' % (telefone.get('ddd', ''), telefone.get('numero', ''))}" autoComplete="false" readonly/>
</div>
<div class="col s2">
<input type="checkbox" id="${python: telefone.get('id', '')}" name="telefones.sms" ${python: 'checked' if telefone.get('sms', '') else ''}>
<label for="${python: telefone.get('id', '')}" class="active fix-label" style="top: 25px !important">SMS</label>
</div>
<div class="input-field m-t-10 col s2">
<button type="button" class="sp_btn right red m-t-05 btn-remover-telefone">Remover</button>
</div>
</div>
简单来说,pessoa['telefones']
是一个列表,可以包含0个或多个词典。
这里的重点是:
<input type="checkbox" id="${python: telefone.get('id', '')}" name="telefones.sms" ${python: 'checked' if telefone.get('sms', '') else ''}>
<label for="${python: telefone.get('id', '')}" class="active fix-label" style="top: 25px !important">SMS</label>
由于我的 plone 站点使用 materialize,我需要通过 id 将标签连接到复选框,否则它不会显示。听起来它会起作用,因为 telefone
上的每个索引都有一个唯一的 ID。问题在于,当它呈现时,ID 属性 呈现为 TALES 表达式的字符串而不是表达式结果,如下所示:
<input type="checkbox" id="${python: telefone.get('id', '')}" name="telefones.sms">
<label for="2138518" class="active fix-label" style="top: 25px !important">SMS</label>
为什么?我怎样才能解决它?尽我所能搜索,但找不到解决方案。
您使用的是什么 Plone 版本?我不存在像 ${} 这样的早期版本表达式。 应该一直有效的是这样的:
<input type="checkbox" tal:attributes="id python: telefone.get('id', '')"> name="telefones.sms">
希望对你有所帮助,Maik 干杯