Magento - JavaScript-Fehler verhindert das Hinzufügen und Speichern von Kategorien

8

Ich versuche, bei einer lokalen Installation von Magento CE 1.8.1 eine neue Stammkategorie hinzuzufügen. Wenn ich jedoch die Schaltfläche zum Speichern der Kategorie drücke, erhalte ich den folgenden Fehler in der Konsole und nichts passiert auf dem Bildschirm.

Ich habe versucht, alle Kerndateien usw. neu zu installieren, aber nichts scheint dieses Problem zu beheben.

Uncaught TypeError: Cannot read property 'split' of undefined

    
Dave Sims 26.03.2014, 17:21
quelle

2 Antworten

0

Dies ist ein JavaScript-Fehler in der Ajax-Routine, der die Formulardaten an den Magento-Server sendet. Der Code, der den Fehler verursacht, ist

%Vor%

Der allgemeine [Pfad] repräsentiert die Kategoriehierarchie, so dass eine Stammkategorie immer ein

haben sollte %Vor%

aber eine Unterkategorie hat die ID ihrer übergeordneten Kategorie.

Es ist ein merkwürdiger Fehler für Sie. Können Sie Unterkategorien erfolgreich erstellen? Können Sie herausfinden, warum die Formularvorlage nicht das allgemeine Feld [Pfad] einstellt? Wenn Sie die Quelle der HTML-Seite der Seite "neue Root-Kategorie hinzufügen" überprüfen, sollten Sie Code wie diesen sehen, nein?

%Vor%

Der Fehler, den Sie erhalten, weist darauf hin, dass Sie diese HTML-Zeile nicht in Ihrem neuen Stammkategorienformular haben. (Oder möglicherweise, dass es vorher einen Javascript-Fehler gibt, über das Einstellen des Kategorie-Pfades, aber fangen Sie an, nach dem HTML zu suchen und melden Sie sich zurück. Sie könnten einige JavaScript-Unterbrechungspunkte hinzufügen, um die Variablen zu untersuchen und zu verstehen, warum [Pfad ] endet undefiniert.)

    
Malachy 26.03.2014 22:22
quelle
0

Das eigentliche Problem

beginnt in Mage_Adminhtml_Block_Catalog_Category_Tab_Attributes

In der Funktion _prepareForm ist eine if-Bedingung ( if ($this->getAddHiddenFields()) ), die sicherstellt, dass die versteckten Felder general[id] und general[path] nicht gerendert werden, weil sie immer false zurückgibt.

Eine schlechte Lösung wäre, die if-Bedingung zu entfernen.

aber da Kernänderungen schlecht sind, ist das neue Wunder, was ist getAddHiddenFields() und warum gibt es false zurück?

Die Lösung ( für jetzt ):

Suchen Sie in der Datenbanktabelle eav_attribute_group nach einem Eintrag, der der folgenden Abfrage entspricht:

%Vor%

und setze sort_order auf 1

Die Erklärung:

Die Antwort auf meine erste Frage (was ist getAddHiddenFields() ): getAddHiddenFields() ist eine magische Methode und gibt den Wert des varien-Objektfeldes 'add_hidden_fields' zurück. Der Wert von 'add_hidden_fields' wird durch setAddHiddenFields() in Mage_Adminhtml_Block_Catalog_Category_Tabs->_prepareLayout() festgelegt.

Für die Antwort auf meine zweite Frage (warum gibt es immer false zurück) habe ich ein kleines Debug-Log erstellt:

%Vor%

Hinweis 1: Denken Sie daran, dass $ defaultGroupId mit 0 initialisiert wird, sodass der erste Eintrag von groupCollection als Standard festgelegt wird (daher die aktuelle Lösung ) Setze die defaultGroups sortOrder auf 1)

Hinweis 2: Oh, schau mal die NextMystery $ group- & gt; getIsDefault () von Gruppe 3 gibt FALSE zurück (in meinem Fall ist Gruppe 3 General und in der Datenbank is_default = 1) Ich habe es noch nicht getestet, weil mir die aktuelle Lösung momentan genügt.

    
rayphi 08.01.2016 11:30
quelle