Mehrfachänderung | Zeichenlimit 2700 Zeichen - Wie vergrößern?

Hallo Zusammen,

Ziel/Vorgehen:

wir möchten eine Mehrfachänderung, klassisch über die Funktion Mehrfachänderung in der Artikelübersicht durchführen.

Dazu haben wir ein eigenes Freitextfeld erstellt - im Backend erscheint die Eingabemaske unter Artikel und in unserem Shop-Template wird der Inhalt auch ausgegeben. Funktioniert alles soweit.

Jetzt möchten wir eine Mehrfachänderung bei Artikeln mit diesem Freitextfeld über die Mehrfachänderung (Operator:Set) durchführen.

Bei dem Textfeld ‘Wert’ wird eine Zeichenkette mit mehr als 2700 Zeichen eingegeben.

 

Problem:

SW meldet allerdings das die Zeichenkette nicht länger als 2700 Zeichen lang sein darf in diesem Eingabefeld.

In der DB ist das Attribut mit ‘MEDIUMTEXT’ als Datentyp gekennzeichnet, so dass eine ausreichende Größe von mehr als 2700 Zeichen dargestellt und verarbeitet werden kann. Geben wir die gewünschte Zeichenkette (ca.4500 Zeichen) über die Stammdaten-Artikel selbst ein, wir das auch übernommen, abgespeichert und angezeigt im Store-Front.

Hat Shopware eine restriktion für die Zeichenketten-Eingabe irgendwo eingestellt - bzw.

Wie kann man die Zeichenkettenlänge im Eingabefeld ‘WERT’ der Mehrfachänderung vergrößern?

 

Unsere Konfig:

SW 5.5.10 / PHP 7.0.33 ( php.ini -> max_input_vars = 8000)

Hey Lampe,

 

soweit ich das sehe ist das unter „engine/Shopware/Components/MultiEdit/Resource/Product/BatchProcess.php“ auf eine MAX_VALUE gesetzt.

Ob das ändern weitere Probleme mit sich bringt kann ich dir noch nicht sagen da müsste ich auch erst experimentieren.

Vllt ist das ja was für dich zum testen.

 

Grüße

Alex

Wichtig ist aber hier den Issue zu beachten.

 /**
 37      * Issue SW-23934
 38      *
 39      * Due to a problem in PHP (PHP :: Bug #70110 :: preg_match problem) long values can lead to a problem parsing the DQL
 40      */

 

*Sicherheitshalber dann doch lieber den Weg über die Datenbank gehen. Dort hast du ja deine ganz normale Zeichenlänge

Danke MrAle,

ich habs gerade getestet und den Wert auf 4000 gesetzt.

/**
     * Issue SW-23934
     *
     * Due to a problem in PHP (https://bugs.php.net/bug.php?id=70110) long values can lead to a problem parsing the DQL
     */
    const MAX_VALUE_LENGTH = 4000;

Das Problem besteht nachwievor.

Die eingegebene Zeichenkette wird nicht übernommen (ca 3800 Zeichen) und die Hinweismeldung, dass man nicht mehr als 2700 Zeichen eingeben soll im Eingabefeld, wird immer noch ausgegeben. Es kommt nichts in der DB an bzw. wird dort nicht übernommen.

Es scheint noch eine weitere Einstellung von Relevanz zu sein.

 

PS: Was meintest du genau mit dem Weg direkt über die DB?

 

Per Sql-Befehl die Artikel zu befüttern.

Ich denke das ist das sinnvollste before man da im Core rumfrickelt :smiley:

 

Grüße

Alex

1 „Gefällt mir“

Wenns gar nicht anders geht kannst du hier:

Die Value ändern, dann lässt er dich das ganze auch noch abschicken.

 

ABER WIE GESAGT KEINERLEI GEWÄHR UND BEACHTEN DASS DAS GANZE BEIM UPDATE WIEDER ÜBERSCHRIEBEN WIRD.

DIES IST NICHT DER OPTIMALE WEG.

 

In dem Sinne. 

Grüße

1 „Gefällt mir“

Danke MrAle,

habe wie von dir angedeutet in der batch_process.js die maxLength von 2700 auf 4500 verändert. 

Hinweismeldung ist weg und der Befehl (mit allen ca4500 Zeichen) ging bis in die DB durch! Sehr gut, Danke.

 

Allerdings hängt in der DB bei jedem Artikel nun folgendes dran:

' WHERE attribute.id IN('756', '846', '847', '848', '849', '850', '851', '852', '853', '854', '855', '856' 

Das Phänomen kam schon einmal in der Diskussion auf: https://forum.shopware.com/discussion/56824/fehler-bei-mehrfachaenderung-artikeltext-ab-bestimmter-laenge/p1

 

Weisst Du evtl warum bzw. wo SQL den Befehl erweitert, (um die zu ändernde (in meinem Fall Artikel ID’s) Textfelder)?

 

PS: An alle Nachahmer !!! Wenn das in einer Produktivumgebung passiert ohne BACKUP - bitte nicht solche Umstellungen machen!!

Rein vom zeitlichen würde ich jetzt tippen das es genau der Punkt ist warum Shopware die Limitierung gesetzt hat. 

Der Issue wurde vor 13 Monaten in den Code eingepflegt, der Topic ist 2 Jahre alt.

Vermutlich war das der nötige Fix dann.

Und der ist ja nicht ohne Grund drin :wink:

 

Jetzt noch tiefer reinzugehen ist glaube ich nicht die Lösung für dein Problem weil du nicht mehr glücklich wirst wenn du das jedesmal neu bauen musst.

Wenn du da wirklich weiter machen willst, dann per PN bitte. Möchte nicht hier noch andere anstecken das nachzubasteln.

Dann häng ich mich auch gerne ran.

 

Grüße

 

Alex

1 „Gefällt mir“

Vielen Dank für die verschiedenen Ansätze und Möglichkeiten, vor allem die schnelle Reaktion. :slight_smile:

Nach einigen Versuchen und “Abschüssen” vom Test-System habe ich das Ziel (siehe Fragestellung) erreicht.

Am einfachsten und unkompliziertesten geht das mit der Export/Import Funktion.

 

Ziel/Lösung:

Artikel export -> gewünschte Veränderung Artikel (Text-Beschreibung) durchführen -> Artikel Import

HURRA!!

 

Warum auch immer - Anscheinend hat Shopware keine Probleme beim Import mit der selben Textlänge wie bei einer Mehrfachänderung direkt aus dem Backend.

Das Problem liegt da eher an DQL vom Doctrine. Dieser wird bei import export nicht verwendet. Du solltest keinesfalls diese Limitierung entfernen. Das führt zum Problem, das ALLE Produkte diesen Text kriegen.

1 „Gefällt mir“