Criar array no template Smarty

Oct 01 2020

Desejo modificar os sites de modelo do Smarty / all / modules / civicrm / templates / CRM / Case / Audit / Report.tpl. Eu quero complementar uma expressão foreach existente comparando a variável de entrada$group.title to an array of titles, and execute the following code only if the current $group.title é encontrado nessa matriz.


{assign var=visible-fields value=['value1, value2']}
<div> Visible fields var: {$visible-fields} </div> {if $group.title|in_array:$visible-fields} <h2>{$group.title}</h2>
  <table class ="report-layout">
  {foreach from=$group.values item=row} <tr> <th class="label">{$row.label}</td>
      <td class="crm-case-report-custom-field">{$row.value}</td>
      </tr>
  {/foreach}
  </table>
{/if}

Agora, estou ficando preso em uma tarefa bastante simples: o array visible-fieldsnão foi criado. Eu encontrei alguns tópicos de fórum dos anos 2000 sugerindo algumas expressões. Tentei o seguinte, mas nenhum deles parece funcionar:

  • {assign var=visible-fields value=['value1, value2']}
  • {assign var=visible-fields value=['value1', 'value2']}
  • {assign var='visible-fields' value=['value1, value2']}
  • e o mesmo com "" em vez de ''
  • {assign var="visible-fields" value=","|explode:['value1, value2']}

Imprimir a variável com <div> Visible fields var: {$visible-fields} </div>resultados em 0.

Também tentei resolver o problema com um {php}...{/php}bloqueio, mas o aplicativo da web gerou um erro. Talvez eu tenha que habilitar o suporte para esses blocos de php embutidos em algum lugar, mas antes de tentar isso, quero tentar resolver com a expressão do Smarty, porque criar um array não deve ser tão difícil, certo?

Alguém pode me dizer como fazer ou postar um link?

Respostas

1 Demerit Oct 01 2020 at 20:07

Este método funciona para mim:

{assign var=visible_fields value=','|explode:'value1,value2'}
<div>Visible fields var:
  {foreach from=$visible_fields item=foo} <div>Element is {$foo}</div>
  {/foreach}
</div>