Invece di usare il attribute
function, è possibile accedere ai valori dell'array _context
con la normale notazione staffa così:
{{ _context['placeholder' ~ id] }}
Io personalmente utilizzare questo come è più conciso e, a mio parere più chiara.
Se il environment optionstrict_variables
è impostato su true
, si dovrebbe anche utilizzare il filtro default
:
{{ _context['placeholder' ~ id]|default }}
{{ attribute(_context, 'placeholder' ~ id)|default }}
altrimenti otterrete un'eccezione Twig_Error_Runtime
se la variabile non esiste. Ad esempio, se si hanno variabili foo
e bar
ma si tenta di emettere la variabile baz
(che non esiste), si ottiene tale eccezione con il messaggio Key "baz" for array with keys "foo, bar" does not exist
.
Un modo più dettagliato per verificare l'esistenza di una variabile è quello di utilizzare il defined
test:
{% if _context['placeholder' ~ id] is defined %} ... {% endif %}
Con il filtro default
si può anche fornire un valore predefinito, ad esempio, null
o una stringa:
{{ _context['placeholder' ~ id]|default(null) }}
{{ attribute(_context, 'placeholder' ~ id)|default('Default value') }}
Se si omette il valore predefinito (cioè si utilizza invece di |default
|default(somevalue)
), il valore predefinito sarà una stringa vuota.
strict_variables
è false
per impostazione predefinita, ma preferisco impostarlo su true
per evitare problemi accidentali causati da ad es. errori di battitura.
dove si definisce segnaposto 1 - x? Sono accessibili a livello globale ogni fattura ha il proprio segnaposto? – KhorneHoly
Li sto definendo nel controler e passando al modello di ramoscello. –
Puoi mostrarmi il codice in cui stai definendo e passandoli? Quindi dovrei essere in grado di aiutarti :) – KhorneHoly