Erstellen Sie ein Array in einer Smarty-Vorlage
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
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>