[SOLVED] DatePicker in Neos Form


(Thomas Lehming) #1

Hallo,

Wenn ich in der Neos Demo das mitgelieferte Formular um ein Datumsfeld erweitern will, kommt nach dem Absenden diese Fehlermeldung:

Warning: htmlspecialchars() expects parameter 1 to be string, object given in /usr/www/users/****/neos-base-distribution/Packages/Libraries/typo3fluid/fluid/src/Core/Parser/SyntaxTree/EscapingNode.php line 44

Ich habe einfach die contact-form.yaml mit dem DatePicker erweitert:

    type: 'Neos.Form:SingleLineText'
    identifier: name
    label: 'Name'
    validators:
      - identifier: 'Neos.Flow:NotEmpty'
    properties:
      placeholder: 'Name'
    defaultValue: ''
  -
    type: 'Neos.Form:DatePicker'
    identifier: datum
    label: Datum
    validators:
      - identifier: 'Neos.Flow:NotEmpty'
    properties:
      dateFormat: 'Y-m-d'
      enableDatePicker: true
      displayTimeSelector: false
      placeholder: Datum
      defaultValue: ''
  -
    type: 'Neos.Form:SingleLineText'
    identifier: email
    label: 'Email'
    validators:
      - identifier: 'Neos.Flow:NotEmpty'
      - identifier: 'Neos.Flow:EmailAddress'
    properties:
      placeholder: 'Email'
    defaultValue: ''

Ohne DatePicker kann ich das Formular ganz normal absenden. Hat jemand einen Rat für mich?


(Bastian Waidelich) #2

Hallo Thomas,

das Problem kann ich nicht reproduzieren (mit Neos 3.0 im Dev-Context):
Ich habe das Datums-Feld wie oben eingebunden in einem Formular, jQuery und jQuery-UI eingebunden und ich kann das Formular darstellen, erneut anzeigen nach Validierungs-Fehlern und Absenden. Alles ohne Fehler…

Gibst Du das Datum irgendwo aus?
z.B. Wenn Du einfach den EMail-Finisher verwendest mit dem Beispiel-Text wie konfiguriert:

Hello,

<f:for each="{form.formState.formValues}" as="value" key="label">
	{label}: {value}
</f:for>

Thanks

Dann wird da versucht, das \DateTime als String auszugeben. Versuch es in dem Fall mal mit einem eigenen Template, z.B:

Hallo {form.formState.formValues.name},

Datum: {form.formState.formValues.datum -> f:format.date(format: 'd.m.Y')}

HTH,
Bastian


(Thomas Lehming) #3

Vielen Dank, das war die Lösung: