yform icon indicating copy to clipboard operation
yform copied to clipboard

Speichern des be_table Feldes nicht mehr möglich mit V 4.2.0 (mit V4.1.1 funktioniert es)

Open olien opened this issue 1 year ago • 8 comments

Fehlermeldung:

Transaktion wurde wegen folgendem Fehler nicht ausgeführt: json_decode(): Argument #1 ($json) must be of type string, array given

--

System report (REDAXO 5.16.1, PHP 8.2.4, MySQL 5.7.39)
REDAXO
Version 5.16.1
PHP
Version 8.2.4
OPcache no
Xdebug no
Database
Version MySQL 5.7.39
Character set utf8mb4
Warning Die verwendete MySQL-Version 5.7.39 wird nicht mehr vom Hersteller gepflegt und sollte aktualisiert werden.
Server
OS Darwin
SAPI cgi-fcgi
Webserver Apache/2.4.54
Request
Browser Safari/17.0
Protocol HTTP/1.1
HTTPS yes
Packages
accessdenied 2.1.0
activity_log 0.1.0
adminer 2.0.0
backup 2.9.1
base 0.0.1
base/documentation 1.0
base_jobportal 0.0.1
base_news 0.0.1
be_password 2.0.1
be_style 3.3.1
be_style/customizer 3.3.1
be_style/redaxo 3.3.0
bloecks 3.1.1
bloecks/cutncopy 3.1.1
cke5 6.1.0
cronjob 2.10.2
cronjob/article_status 2.10.0
debug 1.3.1
developer 3.9.2
focuspoint 4.2.2
geolocation 2.1.3
gridblock 1.1.12
gridblock/contentsettings 1.7.1
gridblock/synchronizer 1.0
httpheader 1.1.3
install 2.12.1
maintenance 2.9.2
mblock 3.4.13
media_manager 2.15.0
media_negotiator 4.0.4
mediapool 2.13.1
metainfo 2.10.1
mform 7.3.3
phpmailer 2.13.0
project dev
quick_navigation 6.1.1
rexstan 1.0.163
sprog 1.5.1
structure 2.16.0
structure/content 2.16.0
theme 1.4.0
uploader 2.4.2
url 2.1.0
users 2.10.1
watson 2.3.0
yform 4.2.0
yform/email 4.2.0
yform/manager 4.2.0
yform/tools 4.2.0
yform_spam_protection 1.2.4
yform_usability 2.1.4
yrewrite 2.10.0

olien avatar Feb 29 '24 07:02 olien

kannst du mir das be_table set geben? @olien

dergel avatar Mar 04 '24 23:03 dergel

lösch mal bitte die komplette Methode "preValidateAction" aus dem be_table Feld. Dann geht es bei mir. Ich glaube das sind Dinge aus BC Gründen drin, die wir jetzt rausschmeißen können. Kannst du in Slack nach verschiedenen Varianten und tests fragen. Ich teste das be_table. Das Feld ist mir zu seltsam.

dergel avatar Mar 05 '24 09:03 dergel

Jo. Das klappt. Danke. Ich schreibe es mal in Slack!

olien avatar Mar 05 '24 09:03 olien

ich hätte gerne ein paar mehr Tests. Das kann ich so verschiedenen Formen genutzt werden.

dergel avatar Mar 05 '24 10:03 dergel

sag mir gern wie ich es testen kann? ich nutze es ja nur auf eine art :-)

olien avatar Mar 05 '24 14:03 olien

Und mit letzten Beta war die Welt auch noch in Ordnung. In Geolocation (Layer-Tabelle) ist ein be_table-Feld. Wenn ich die preValidateAction-Methode neutralisiere, läuft es weiter bis zum Aufruf des Cuatom-Validators. Der bekam bisher einen JSON-String geliefert, nun ein Array. Bereits die Rückmeldung aus dem Formular ist ein Array (sieht man am $_REQUEST).

Das Problem scheint also zu sein, dass an allen Stellen konsequent mit einem Format gearbeitet wird, also am frühesten Punkt (preValidateAction) den aus der DB geladenen JSON-String in ein Array umwandeln und mit setValue merken, dann nur noch damit arbeiten und erst vor dem Speichern in einen JSON-String codieren. Alternativ um frühestmöglichen Zeitpunkt das Array aus dem Formular in einen JSON-String umwandeln und mit setValue merken. Wer den Wert bearbeitet, muss halt selbst decodieren.

irgendwie so ....

christophboecker avatar Mar 05 '24 16:03 christophboecker

Jans Trick mit preValidateAction löschen hat bei mir geholfen.

dtpop avatar Mar 07 '24 11:03 dtpop

Jans Trick mit preValidateAction löschen hat bei mir geholfen.

Das mache ich nun auch erstmal. Wenn jemand einen Fallback haben möchte, gerne als PR

dergel avatar Mar 19 '24 14:03 dergel