Erstellen Sie ein Array in einer Smarty-Vorlage

Oct 01 2020

Ich möchte die Smarty-Vorlagensites / all / modules / civicrm / templates / CRM / Case / Audit / Report.tpl ändern. Ich möchte einen vorhandenen foreach-Ausdruck durch den Vergleich der eingehenden Variablen ergänzen$group.title to an array of titles, and execute the following code only if the current $group.title befindet sich in diesem 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}

Jetzt stecke ich bei einer ziemlich einfachen Aufgabe fest: Das Array visible-fieldswird nicht erstellt. Ich habe einige Forenthreads aus den 2000er Jahren gefunden, die einige Ausdrücke vorschlagen. Ich habe Folgendes versucht, von dem keines zu funktionieren scheint:

  • {assign var=visible-fields value=['value1, value2']}
  • {assign var=visible-fields value=['value1', 'value2']}
  • {assign var='visible-fields' value=['value1, value2']}
  • und das gleiche mit "" statt ''
  • {assign var="visible-fields" value=","|explode:['value1, value2']}

Das Drucken der Variablen mit <div> Visible fields var: {$visible-fields} </div>ergibt eine 0.

Ich habe auch versucht, das Problem mit einem {php}...{/php}Block zu lösen , aber dann gibt die Web-App einen Fehler aus. Vielleicht muss ich die Unterstützung für diese Inline-PHP-Blöcke irgendwo aktivieren, aber bevor ich das versuche, möchte ich versuchen, es mit dem Smarty-Ausdruck zu lösen, weil das Erstellen eines Arrays nicht so schwierig sein sollte, oder?

Kann mir jemand sagen, wie es geht, oder einen Link posten?

Antworten

1 Demerit Oct 01 2020 at 20:07

Diese Methode funktioniert bei mir:

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