Crea array nel modello Smarty

Oct 01 2020

Voglio modificare i siti modello Smarty / all / modules / civicrm / templates / CRM / Case / Audit / Report.tpl. Voglio completare un'espressione foreach esistente con il confronto della variabile in entrata$group.title to an array of titles, and execute the following code only if the current $group.title si trova in quell'array.


{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}

Ora, mi sto bloccando su un'attività piuttosto semplice: l'array visible-fieldsnon viene creato. Ho trovato alcuni thread del forum degli anni 2000 che suggerivano alcune espressioni. Ho provato quanto segue, nessuno dei quali sembra funzionare:

  • {assign var=visible-fields value=['value1, value2']}
  • {assign var=visible-fields value=['value1', 'value2']}
  • {assign var='visible-fields' value=['value1, value2']}
  • e lo stesso con "" invece di ""
  • {assign var="visible-fields" value=","|explode:['value1, value2']}

La stampa della variabile con <div> Visible fields var: {$visible-fields} </div>risultati in 0.

Ho anche provato a risolvere il problema con un {php}...{/php}blocco, ma poi l'app web genera un errore. Forse devo abilitare il supporto per questi blocchi php inline da qualche parte, ma prima di provarlo, voglio provare a risolverlo con l'espressione Smarty, perché creare un array non dovrebbe essere così difficile, giusto?

Qualcuno può dirmi come farlo o pubblicare un collegamento?

Risposte

1 Demerit Oct 01 2020 at 20:07

Questo metodo funziona per me:

{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>