Wie können Sie das benutzerdefinierte Datumsformat für Symfony2-Formulare richtig einstellen?
Das Standardformat ist wie Y-m-d
, und wenn ich ein Datum wie m/d/Y
oder d/m/Y
eingabe, wird es als ungültig behandelt.
Gibt es eine Möglichkeit, das Format mit dem ausgewählten Gebietsschema in Beziehung zu setzen? Ich suche nach einer einfachen Lösung, ohne benutzerdefinierte Formulartypen zu schreiben.
Sie können das Format in Ihrem FormType festlegen, wenn Sie ein anderes Format wünschen.
%Vor% Der Standardwert ist nicht 'Y-m-d' ist eine Instanz von IntlDateFormatter
. Daher sollte das richtige Gebietsschema ausgewählt werden, wenn Sie keinen einzelnen Text verwenden.
type: integer oder string Standard: IntlDateFormatter :: MEDIUM (oder yyyy-MM-dd, wenn das Widget single_text ist)
Sie sollten dies global mit einem Event Listener Ссылка
festlegen könnenWenn Sie das Format Ihres Datumsfelds abhängig von der Ländereinstellung ändern möchten, müssen Sie ein benutzerdefiniertes Feld erstellen und dieses anstelle des Datums verwenden. Es ist der einzige Weg, den ich kenne.
Erstellen Sie zuerst den Dienst und übergeben Sie das Gebietsschema in den Argumenten:
%Vor%Erstellen Sie die Klasse mit dem Code für den neuen Feldtyp. Wie Sie sehen können, basiert es auf dem Datum des Feldtyps und ändert das Format abhängig vom aktuellen Gebietsschema:
%Vor% Verwenden Sie es in Ihrer Anwendung anstelle des Feldtyps date
:
Ich hoffe, es hilft.
Mit freundlichen Grüßen.
Sie können das date_widget von symfony unter YourProjectFolder \ vendor \ symfony \ symfony \ src \ Symfony \ Bridge \ Twig \ Ressourcen \ views \ Form \ form_div_layout.html.twig überschreiben. Kopieren Sie die Datei in eine andere Datei wie fields.html.twig und fügen Sie sie unter der globalen Ressource \ views \ Form \ ein und überschreiben Sie das date_widget (ändern Sie es in Ihr Standardformat):
%Vor%{% - Endblock date_widget%}
Dann fügen Sie in Ihrem Formular hinzu:
%Vor%