news/plugins/form/templates/forms/default/data.html.twig

78 lines
4.1 KiB
Twig
Raw Normal View History

{% macro render_field(form, fields, scope) %}
{% import _self as self %}
{% for index, field in fields %}
{%- set show_field = attribute(field, "input@") ?? field.store ?? true %}
{% if field.fields %}
{%- set new_scope = field.nest_id ? scope ~ field.name ~ '.' : scope -%}
{{- self.render_field(form, field.fields, new_scope) }}
{% else %}
{% if show_field %}
{%- set value = form.value(scope ~ (field.name ?? index)) -%}
{% if value %}
{% block field %}
<div>
{% block field_label %}
<strong>{{ field.label|t|e }}</strong>:
{% endblock %}
{% block field_value %}
{% if field.type == 'checkboxes' %}
<ul>
{% set use_keys = field.use is defined and field.use == 'keys' %}
{% for key,value in form.value(scope ~ field.name) %}
{% set index = (use_keys ? key : value) %}
<li>{{ field.options[index]|t|e }}</li>
{% endfor %}
</ul>
{% elseif field.type == 'radio' %}
{% set value = form.value(scope ~ field.name) %}
{{ field.options[value]|t|e }}
{% elseif field.type == 'checkbox' %}
{{ (form.value(scope ~ field.name) == 1) ? "GRAV.YES"|t|e : "GRAV.NO"|t|e }}
{% elseif field.type == 'select' %}
{% set value = form.value(scope ~ field.name) %}
{% if value is iterable %}
<ul>
{% set use_keys = field.use is defined and field.use == 'keys' %}
{% for key, val in value %}
{% set index = (use_keys ? key : val) %}
<li>{{ field.options[index]|t|e }}</li>
{% endfor %}
</ul>
{% else %}
{{ field.options[value]|t|e }}
{% endif %}
{% else %}
{% set value = form.value(scope ~ field.name) %}
{% if value is iterable %}
<ul>
{% for val in value %}
{% if val is iterable %}
<ul>
{% for v in val %}
<li>{{ string(v)|e }}</li>
{% endfor %}
</ul>
{% else %}
<li>{{ string(val)|e }}</li>
{% endif %}
{% endfor %}
</ul>
{% else %}
{{ string(value)|e|nl2br }}
{% endif %}
{% endif %}
{% endblock %}
</div>
{% endblock %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% endmacro %}
{% import _self as macro %}
{{ macro.render_field(form, form.fields, '') }}