Ich habe ein einfaches Formular erstellt, das ein Objekt behandelt Person und dieses Objekt besitzt die Eigenschaft birthDate, die vom Typ Datetime ist.Wie kann ich eine Datetime-Eigenschaft in TYPO3 speichern?
Jetzt möchte ich eine Person erstellen und diese Eigenschaft zu speichern, aber wenn ich versuche, das Formular abzuschicken der folgende Fehler auftritt:
Das Datum „% s“ wurde nicht erkannt (für Format „% s“)
Ich habe einige Threads gelesen und viele von ihnen schlagen vor, eine Initialisierungsaktion zu verwenden, um dieses Problem zu behandeln, aber das funktioniert nicht für mich.
Person:
class Person extends AbstractEntity
{
...
/**
* Stores the birth date of a person
*
* @var \DateTime
* @validate NotEmpty, DateTime
*
*/
protected $birthDate = null;
...
}
Fluid:
<f:form action="send" method="post" enctype="multipart/form-data" name="person" object="{person}">
...
<fieldset>
<f:render partial="FormErrors" arguments="{field: 'person.birthDate'}" />
<label class="required">Birthdate</label>
<f:form.textfield
type="date"
placeholder="dd.mm.yyyy"
property="birthDate"
/>
</fieldset>
...
</f:form>
Meine initialize Aktion wie folgt aussieht:
public function initializeSendAction()
{
if (isset($this->arguments['person'])) {
$this->arguments['person']->getPropertyMappingConfiguration()->forProperty('birthDate')->setTypeConverterOption(
'TYPO3\\CMS\\Extbase\\Property\\TypeConverter\\DateTimeConverter',
\TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,
'd.m.Y'
);
}
}
und die Sendeaktion wie folgt aussieht:
public function sendAction(\Fox\Example\Domain\Model\Person $person)
{
$this->personRepository->add($person);
...
}
So gibt es nichts besonderes, aber es scheint, dass meine benutzerdefinierte Datetime-Format "d.m.Y" funktioniert nicht und die Eigenschaft ist vom Typ String, irgendwelche Vorschläge?
Thx für Ihre Antwort, ich habe jetzt ähnlich verwendet, um etwas. Eine String-Eigenschaft behandelt das Formularfeld und speichert und konvertiert diese Zeichenfolge nach der Validierung in eine zweite Datetime-Eigenschaft. – Fox