From 81088a913a12b37f59bf846afbe43756e52ed352 Mon Sep 17 00:00:00 2001 From: Xaratas Date: Tue, 7 Apr 2026 14:26:11 +0200 Subject: [PATCH] Add data.yaml.twig handler --- CHANGELOG.md | 5 +++++ templates/forms/data.yaml.twig | 1 + templates/forms/default/data.yaml.twig | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 templates/forms/data.yaml.twig create mode 100644 templates/forms/default/data.yaml.twig diff --git a/CHANGELOG.md b/CHANGELOG.md index 3734a66..8420e99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# v8.x.x +## __/__/____ +1. [](#improved) + - Add `data.yaml.twig` handler for the form save action to write the data as valid yaml + # v8.2.1 ## 12/28/2025 diff --git a/templates/forms/data.yaml.twig b/templates/forms/data.yaml.twig new file mode 100644 index 0000000..4f62ee8 --- /dev/null +++ b/templates/forms/data.yaml.twig @@ -0,0 +1 @@ +{% extends "forms/default/data.yaml.twig" %} diff --git a/templates/forms/default/data.yaml.twig b/templates/forms/default/data.yaml.twig new file mode 100644 index 0000000..6df8612 --- /dev/null +++ b/templates/forms/default/data.yaml.twig @@ -0,0 +1,23 @@ +{%- macro render_field(form, fields, scope) %} +{%- import _self as self %} +{%- autoescape false %} +{%- 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 -%} + {{- (field.data_label ? field.data_label|t|e : field.label|t|e)|yaml_encode }}: {{ string(value is iterable ? value|json_encode : value)|yaml_encode ~ "\n" }} + {%- endif -%} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- endautoescape %} +{%- endmacro %} +{%- import _self as macro %} +{%- autoescape false %} +{{- macro.render_field(form, form.fields, '') ~ "\n" }} +{%- endautoescape %} \ No newline at end of file