Closed soletan closed 6 years ago
Im Feld optionsSource
steht table
, dann müsstest du eigentlich den Options-Manager verwenden, und eine Integer-Spalte wäre korrekt? Oder hast du die Mehrfachauswahl aktiviert?
Die Detailansicht zum bestehenden Attribut zeigt, dass es ein "Select Menü" mit Bedatung per Optionen Manager ist. Mehrfach-Auswahlen kann ich augenscheinlich dort nicht wählen. Die weiteren aktiven Optionen sind "Für Varianten verwenden" und "Filterbar im Backend".
Da in den Bestandsdaten auch Nicht-0-Integer-Werte hinterlegt sind, nehme ich an, dass es auch beim Bearbeiten weitestgehend funktioniert. Aber aus irgendeinem Grund klappt das Erzeugen neuer Produkte eben nicht, weil dort als Standard-Wert dem INSERT-Statement serialisierte leere Arrays mitgegeben werden.
Im Setup existieren auch weitere Attribute, welche im MySQL nicht als Integer angelegt sind, sondern als Textfeld.
+---------------------+-----------+---------------+
| field_name | type | optionsSource |
+---------------------+-----------+---------------+
| supported_payments | select | attribute |
| device | select | attribute |
| ethernet | select | attribute |
| casing | select | attribute |
| hopper | select | attribute |
| sort_of_copier | select | attribute |
| validator | select | attribute |
| function | checkbox | attribute |
| display | select | attribute |
| supported_device | checkbox | attribute |
| payment | checkbox | attribute |
| slot | select | attribute |
| volume | radio | attribute |
| operating_voltage | select | attribute |
| calibration | select | attribute |
| keyswitch | select | attribute |
| mural_installation | select | attribute |
| unit_type | select | attribute |
| scale | select | attribute |
| amount_copiers | select | attribute |
| accounting_system | checkbox | attribute |
| variant | select | attribute |
| products | checkbox | attribute |
| voltage | select | attribute |
| sensor | select | attribute |
| cable | select | attribute |
| clicks | select | attribute |
| key_number | text | attribute |
| ctm_type | select | attribute |
| firm | select | attribute |
| plug_type | select | attribute |
| xerox_type | text | attribute |
| software_support | select | attribute |
| colour | select | attribute |
| initialization | select | attribute |
| cable_length | text | attribute |
| cable_length_3 | text | attribute |
| trunk | select | attribute |
| access | select | attribute |
| card_type | select | attribute |
| enhance | select | attribute |
| firm_customer | select | attribute |
| plug_type_customer | select | attribute |
| card_print | select | attribute |
| volt | select | attribute |
| revaluation_selling | select | attribute |
| cable_length_2 | text | attribute |
| cable_length_4 | text | attribute |
| cable_length_extra | text | attribute |
| sensor_type | select | attribute |
| port | select | attribute |
| calibration_type | select | attribute |
| connector | select | table |
| steal_casing | select | table |
| print_numbers | select | table |
| keyswitch_surcharge | select | table |
| download | downloads | attribute |
| device_choice | select | table |
| somefake | select | table |
+---------------------+-----------+---------------+
Diese sind aber alle mit der Source attribute
definiert.
Das Kuriose für mich aber ist, wieso die Logik eine Integer-Spalte definiert, aber dann nicht mit Integers befüllt. Ob nun Mehrfachauswahl oder nicht, hier müssen ja die Logiken konsistent zueinander sein, die einerseits die Struktur von tl_iso_product ändern lassen und andererseits dann Werte und Zeilen dafür generieren.
Kommt die DB-Fehlermeldung wenn du ein Produkt oder eine entsprechende Variante anlegen willst?
Ausserdem, hast du bei einer der Optionen die Default-Option aktiviert?
Die Fehlermeldung kommt, wenn ich ein neues Produkt anlegen will, sprich: im Menü links "Produkte" gewählt, dann auf die globale Aktion "Neues Produkt" ... direkt danach kommt die Exception.
Einen Standard hatte ich vorher noch nicht drin. Macht Sinn, dass der sein muss. Doch auch nachdem ich einen Default für das Attribut connector
gewählt hatte, kam die Exception und reklamierte einen falschen Wert beim Feld connector
: a:0:{}
.
Wir haben hier das gleiche Problem mit gleicher Konstellation (Contao 4.4.18, Isotope 2.51).
Soweit lässt es sich (für uns) nur lösen, indem wir nicht den "Optionen-Manager" sondern den "Optionen-Assistent" verwenden - wenngleich der veraltet ist.
Kann das Problem auch bestätigen. Contao 4.4.18 und Isotope 2.5.1. Beim Anlegen eines Produkts kommt es zu dem genannten Fehler.
Is there a hotfix or anything to quickly address this issue? Some of my clients are cut off from creating new variants or products.
@ben-eSM another solution is - switch off STRICT_TRANS_TABLES in MySQL setting (my.cnf if i'm not mistaken). Yeah, i know it's kinda dirty, but ... :D
@godzik Thanks for the hint! But yes, it's not really a clean solution. But at least it'll work for some. However, some clients haven't access to MySQL settings. So they'll have to wait for an official fix.
@godzik That's a quickfix, but no solution. I'd rather have a software that's working with a proper ORM/ODM ... what is Doctrine good for in Contao4? Is it just establishing connections to databases. @aschempp Is this due to Isotope or due to Contao's ORM?
Fixed in ed6f9a377335ffd39a31c4e3b67e8ca0589a633c
Ich habe eine alte Installation Contao3 mit Isotope aktualisiert auf Contao 4.4.18 mit Isotope 2.5.1. Soweit sah alles funktional aus, aber ein Problem aus dem alten Setup ist weiterhin vorhanen: Wenn ich SelectMenü-Attribut anlege, dann erzeugt Isotope eine Integer-Spalte in tl_iso_product, will diese aber mit
'a:0:{}'
befüllen, wenn ich ein neues Produkt anlege.Ich habe das Problem mit einer bestehenden Spalte, die bereits zahlreiche Integer-Referenzen enthält, daher mag ich die nicht mal eben modifizieren. Doch selbst ein neu angelegtes Attribut wurde als Integer angelegt und in der Exception beim Anlegen eines neuen Produkts wieder mit einem leeren Array befüllt.
Das System ist ein Ubuntu 16.04 LTS mit MySQL 5.7.20 und PHP 7.0.28 FPM.