The stock Grav `datetime` field template is deprecated and falls back to a plain text box, so `type: datetime` + `default: now` rendered a raw input showing the literal word "now" — unusable. Add a theme override at templates/forms/fields/datetime/datetime.html.twig that renders a native <input type="datetime-local"> (real calendar+clock, great on mobile), drop the `default: now`, and prefill the current local time from post-form.js. Also add `date` to the existing client-side validator. Together with the picker (which can't hold an invalid value) this stops a bad/empty date from round-tripping to the server — which was the trigger that made Grav re-render the managed FilePond field from the session flash as filename-only inputs and resurrect a photo the user had removed. Grav still reformats the submitted value to the blueprint `format: 'Y-m-d H:i'` on save, so stored dates and folder slugs are unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
19 lines
901 B
Twig
19 lines
901 B
Twig
{# intotheeast override of Grav's datetime field.
|
|
|
|
Grav's stock forms/fields/datetime/datetime.html.twig is DEPRECATED and just
|
|
extends the text field, so `type: datetime` renders a plain <input type="text">
|
|
— the owner sees a raw box (the literal word "now" from `default: now`) with no
|
|
way to pick a date/time. Here we render a native <input type="datetime-local">
|
|
instead: a real calendar + clock picker, and an excellent one on mobile.
|
|
|
|
The value is prefilled to the current local time by post-form.js (JS knows the
|
|
traveller's timezone; the server doesn't), and the existing client-side
|
|
validator now requires this field — so an empty or invalid date can no longer
|
|
reach the server and destroy the FilePond photo list on a re-render. #}
|
|
{% extends "forms/field.html.twig" %}
|
|
|
|
{% block input_attributes %}
|
|
type="datetime-local"
|
|
{{ parent() }}
|
|
{% endblock %}
|