Admin-Konfigurationsfehler: Undefinierter Index: ID in Iterator.php in Zeile 59

15

Kann mir bitte jemand diesen Fehler erklären?

Exception #0 (Exception): Notice: Undefined index: id in /home/staging/vendor/magento/module-config/Model/Config/Structure/Element/Iterator.php on line 59
    #0 /home/staging/vendor/magento/module-config/Model/Config/Structure/Element/Iterator.php(59): Magento\Framework\App\ErrorHandler->handler(8, 'Undefined index...', '/home/asconveyo...', 59, Array)
    #1 /home/staging/vendor/magento/module-config/Model/Config/Structure.php(92): Magento\Config\Model\Config\Structure\Element\Iterator->setElements(Array, 'default')
    #2 /home/staging/var/generation/Magento/Config/Model/Config/Structure/Interceptor.php(24): Magento\Config\Model\Config\Structure->getTabs()
    #3 /home/staging/vendor/magento/module-config/Model/Config/Structure.php(135): Magento\Config\Model\Config\Structure\Interceptor->getTabs()
    #4 /home/staging/var/generation/Magento/Config/Model/Config/Structure/Interceptor.php(63): Magento\Config\Model\Config\Structure->getFirstSection()
    #5 /home/staging/vendor/magento/module-config/Controller/Adminhtml/System/AbstractConfig.php(57): Magento\Config\Model\Config\Structure\Interceptor->getFirstSection()
    #6 /home/staging/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Config\Controller\Adminhtml\System\AbstractConfig->dispatch(Object(Magento\Framework\App\Request\Http))
    #7 /home/staging/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callParent('dispatch', Array)
    #8 /home/staging/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Config\\...', 'dispatch', Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Array, 'adminAuthentica...')
    #9 /home/staging/vendor/magento/module-backend/App/Action/Plugin/Authentication.php(143): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
    #10 /home/staging/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
    #11 /home/staging/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Config\\...', 'dispatch', Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Array, 'adminMassaction...')
    #12 /home/staging/vendor/magento/module-backend/App/Action/Plugin/MassactionKey.php(33): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
    #13 /home/staging/vendor/magento/framework/Interception/Interceptor.php(142): Magento\Backend\App\Action\Plugin\MassactionKey->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
    #14 /home/staging/var/generation/Magento/Config/Controller/Adminhtml/System/Config/Index/Interceptor.php(39): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callPlugins('dispatch', Array, Array)
    #15 /home/staging/vendor/magento/framework/App/FrontController.php(55): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
    #16 /home/staging/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
    #17 /home/staging/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
    #18 /home/staging/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
    #19 /home/staging/vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
    #20 /home/staging/vendor/magento/framework/Interception/Interceptor.php(142): Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
    #21 /home/staging/var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
    #22 /home/staging/vendor/magento/framework/App/Http.php(135): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
    #23 /home/staging/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
    #24 /home/staging/index.php(42): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
    #25 {main}
Steve B
quelle
Hallo, hast du eine neue Erweiterung installiert?
Meetanshi
Möglicherweise liegt ein Fehler in Ihrer Modul-XML-Datei vor (system.xml, acl.xml usw.). Fügen Sie Ihren Code ein, wenn Sie können.
Chander Shekhar
Haben Sie das gleiche Problem, nachdem Sie die Erweiterung github.com/mageplaza/magento-2-better-popup durch Herunterladen installiert haben . Bei der Installation über Composer funktioniert dies jedoch einwandfrei. Ich muss seine Funktionalität ändern, deshalb kann nicht vom Komponisten installiert werden. Hat jemand das gelöst?
Ajwad Syed

Antworten:

29

Bei mir ist ein ähnliches Problem aufgetreten, und in meinem Fall lag das Problem daran, dass die Tab-ID in nicht korrekt angegeben wurde system.xml

<tab id="custom_tab" translate="label" sortOrder="2000">
            <label>Custom Tab</label>
        </tab>
        <section id="custom_section" translate="label" type="text" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1">
            <class>separator-top</class>
            <label>Custom Section</label>
            <tab>customtab</tab>

Um das Problem zu beheben, habe ich geändert ,
<tab>customtab</tab>
um
<tab>custom_tab</tab>

Anshu Mishra
quelle
Hallo @Anshu Mishra, die obige Antwort ist für mich hilfreich, aber wenn ich das Modul von der Admin-Seite aus deaktiviere, ist es nicht deaktivierbar.
Shivashankar m
6

Eine einfache Möglichkeit zum Debuggen ist: Durchsuchen und Öffnen des Herstellers / magento / module-config / Model / Config / Structure / Element / Iterator.php

Veränderung

public function setElements(array $elements, $scope)
    {
        $this->_elements = $elements;
        $this->_scope = $scope;
        if (count($elements)) {
            $lastElement = end($elements);
            $this->_lastId = $lastElement['id'];
        }
    }

zu

public function setElements(array $elements, $scope)
    {
        $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/config_debug.log');
        $logger = new \Zend\Log\Logger();
        $logger->addWriter($writer);

        $this->_elements = $elements;
        $this->_scope = $scope;

        $logger->info($elements);

        if (count($elements)) {
            $lastElement = end($elements);
            $this->_lastId = $lastElement['id'];
        }
    }

Laden Sie das Browser-Konfigurationsfenster neu und sehen Sie den Fehler noch einmal.

Überprüfen Sie die Datei var / log / config_debug.log.

Gehen Sie zum Ende der Datei und sehen Sie, welches Modul ausgefallen ist und wo es aufgehört hat.

Das ist derjenige, der deine Probleme verursacht.

Vergessen Sie nicht, Ihre Änderungen zurückzusetzen, sobald sie behoben sind.

SilverStores
quelle
5

In meinem Fall wurde der Fehler ausgelöst, weil die Registerkarte in dem deaktivierten Modul definiert wurde, aber in einem anderen aktivierten Modul verwendet wurde. Daher empfehle ich Ihnen zu überprüfen, welche Registerkarte keine idin der angegebenen Klasse haben:

Debug-Beispiel

Suchen Sie dann diesen Namen nach dem gesamten Projekt (in der system.xmlDatei) und überprüfen Sie, ob dieses Modul aktiviert ist.

PS : Der Screenshot enthält keinen Fehler, wurde jedoch vom DeliveryTimeModul ausgelöst , da das CoreModul deaktiviert war, als ich versuchte, auf die Konfigurationsseite des Speichers zuzugreifen.

Siarhey Uchukhlebau
quelle
3

In meinem Fall habe ich installiert https://www.mageplaza.com/magento-2store-credit/ Erweiterung, aber nicht Kernmodul von Mageplaza installiert.

Ich habe festgestellt, dass der in <tab>mageplaza</tab>erwähnte system.xmlTab in dieser Datei nicht definiert ist. Also installierte Kernmodul für Mageplaza aus https://github.com/mageplaza/module-core und es funktioniert gut.

Nalin Savaliya
quelle
Thanks @nalin savaliya
Pradip Garchar
1

Ich habe auch dieses Problem in Magento2 konfrontiert. Dies ist meine system.xml-Datei


<tab id="cnet" translate="label" sortOrder="10">
            <label>CNET</label>
        </tab>
        <section id="cnet" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1">
            <class>separator-top</class>
            <label>General Information</label>
            <tab>cnet</tab>
Please change tab id = "cnet" and <tab>cnet</tab>.
If its not matching error will be occur. After change this one run the "sudo php bin/magento setup:di:compile"
Soundararajan m
quelle
0

Dieses Problem tritt aufgrund der Datei system.xml auf. Bitte korrigieren Sie wie folgt , Ihre System-Tab-ID = " custom_tab " translate = "label" sortOrder = "10"> und der Tab-Name unter dem Abschnitt sollte gleich sein.

Ashok Kumar
quelle