Hallo Michael.

Welchen Typ hast Du denn für die Property $admissionreleasestate konfiguriert? 
"@var integer", mit "@var float" oder "@var string"?

Ich würde sagen Du hast einen Bug gefunden den jemand beheben muss. Allerdings 
bin ich mir nicht ganz sicher, ob die Korrektur am Ende Deinen alten Code 
zwangsläufig wieder lauffähig macht.


Wenn Du sagst dass das mit 7.x noch geklappt hat aber mit 8.x nicht mehr, sehe 
ich die Umstellung auf Doctrine als heißen Kandidaten. Über die Zeit haben sich 
eine Menge Dinge in der Extbase-Persistenz und in der DatabaseConnection 
gesammelt die da aus Sicht des CMS natürlich auch hin gehören, die aber 
Doctrine nicht mitbringt weil Dotrine das nicht als seine Aufgabe sieht. Da 
kann bei der Migration schon mal der ein oder andere Aspekt unbeachtet bleiben. 
Ich halte einen solchen Bug gerade bei der Umstellung von 7.x auf 8.x für 
wahrscheinlich.


Wahlweise kann man alle Elemente des Arrays casten. zum Beispiel hiermit:
> $values = array_map(function($value) { return (float)$value}, $values);

Natürlich muss der Cast-Aufruf ein anderer sein, abhängig davon, welchen Typ Du 
für die Property in "@var" angegeben hast.

Das sorgt dafür dass Deine Datenbank nicht kaputt geht. Dein Code verhält sich 
allerdings weiterhin nicht so wie Du das erwartest. Du wirst ja einen Grund 
haben, weshalb Du da "1.2.3" abfragst. (float)"1.2.3" ist 1.2.


Eine andere Variante eines Bugfix könnte sein, dass an der Stelle eine 
Exception fliegen darf. In aktuellen PHP-Versionen sieht das Musterbeispiel so 
aus:
> $values = array_map(function($value:float) { return $value}, $values);


Andererseits muss man sich fragen, ob es die Aufgabe der Persistenz ist, das 
abzufangen. Ich hätte erwartet, dass das schon am Property Mapper hängen 
bleiben muss, und dann dort eben entweder gerade gezogen wird oder eine 
Exception wirft. Der Mechanismus kann der gleiche sein wie oben beschrieben, 
nur möglichst schon bevor der Request die Action betritt.


Ich persönlich würde eine Exception bevorzugen. Der Wert ist schlicht falsch, 
und ein automatischer Cast an der Stelle kann klappen, kann aber auch Blödsinn 
sein. Im Zweifelsfall merkt lange keiner dass das Blödsinn ist, es funktioniert 
ja manchmal. Und in Logs taucht kein Fehler auf.


Sollte Deine Property aber ein String sein (also "@var string" im Model), dann 
fehlen da eindeutig Anführungszeichen. Das wiederum sollte Doctrine eigentlich 
für Dich machen.


Beste Grüße,

Stephan Schuler
Web-Entwickler | netlogix Web Solutions

Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Web: websolutions.netlogix.de



----------------------------
Neu: Wir sind Amazon Web Services Partner. Mehr erfahren:
https://websolutions.netlogix.de/technologie/amazon-web-services-aws
----------------------------




netlogix GmbH & Co. KG
IT-Services | IT-Training | Web Solutions
Neuwieder Straße 10 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: i...@netlogix.de | Web: http://www.netlogix.de

netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Matthias Schmidt



_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an