id属性内的TALES表达式

问题描述 投票:0回答:1

我正在尝试使用tal-repeat在plone模板上动态创建复选框。检查下面的代码以获取详细信息。

<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网站使用实现时,我需要通过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 plone-5.x
1个回答
0
投票

您使用哪种Plone版本?我不喜欢$ {}这样的版本表达式。有时应该起作用的是这样的东西:

name =“ telefones.sms”>

希望对您有帮助,麦可干杯

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.