Kesalahan konfigurasi admin: Indeks tidak ditentukan: id di Iterator.php pada baris 59

16

Bisakah seseorang tolong jelaskan kesalahan ini kepada saya?

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
sumber
Hai, Sudahkah Anda memasang ekstensi baru?
Meetanshi
Mungkin ada kesalahan dalam modul Anda xml (system.xml, acl.xml, dll.) Tempel kode Anda jika Anda bisa.
Chander Shekhar
Mengalami masalah yang sama, setelah menginstal ekstensi github.com/mageplaza/magento-2-better-popup dengan mengunduh. Tetapi ketika menginstal melalui komposer berfungsi dengan baik. Saya perlu mengubah fungsinya itu sebabnya tidak bisa menginstal oleh komposer. Adakah yang sudah memecahkan ini?
Ajwad Syed

Jawaban:

30

Saya telah menghadapi masalah yang sama dan dalam kasus saya, masalah ini adalah karena saya memiliki pencocokan id tab yang salah di 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>

Untuk memperbaiki masalah ini, saya berubah
<tab>customtab</tab>
menjadi
<tab>custom_tab</tab>

Anshu Mishra
sumber
Hai @ Anshu Mishra jawaban di atas membantu saya, tetapi ketika saya menonaktifkan modul dari sisi admin, tidak disablinhg.
shivashankar m
7

Salah satu cara mudah untuk debug adalah: browse dan buka vendor / magento / module-config / Model / Config / Structure / Element / Iterator.php

perubahan

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

untuk

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'];
        }
    }

Muat ulang jendela konfigurasi peramban dan lihat kembali kesalahannya.

Periksa file var / log / config_debug.log.

Pergi ke bagian paling bawah file dan lihat modul mana yang gagal, di mana ia berhenti.

Itulah yang menyebabkan masalah Anda.

Jangan lupa untuk mengembalikan perubahan Anda setelah diperbaiki.

Toko Perak
sumber
5

Dalam kasus saya kesalahan dilemparkan karena tab telah didefinisikan dalam modul yang dinonaktifkan, tetapi digunakan dalam modul lain yang diaktifkan. Jadi, saya sarankan Anda untuk memeriksa tab mana yang tidak memiliki iddalam kelas yang ditentukan:

contoh debug

Kemudian, cari nama itu dengan seluruh proyek (dalam system.xmlfile) dan periksa apakah modul itu diaktifkan.

PS : tidak ada kesalahan pada tangkapan layar, tetapi sebenarnya dipecat oleh DeliveryTimemodul, karena Coremodul dinonaktifkan ketika saya mencoba mengakses halaman konfigurasi toko.

Siarhey Uchukhlebau
sumber
3

Dalam kasus saya, saya telah menginstal https://www.mageplaza.com/magento-2store-credit/ ekstensi, tapi tidak diinstal modul inti Mageplaza.

Saya menemukan bahwa <tab>mageplaza</tab>disebutkan dalam system.xmltab tetapi tidak didefinisikan dalam file ini. Jadi, instal modul inti untuk Mageplaza dari https://github.com/mageplaza/module-core dan berfungsi dengan baik.

Nalin Savaliya
sumber
Terima kasih @nalin savaliya
Pradip Garchar
Sama di sini, kecuali saya menginstal modul melalui Composer, tetapi tidak diaktifkan. bin/magento module:enable Mageplaza_Corememperbaikinya.
Thomas Luzat
1

Saya juga menghadapi masalah ini di magento2. Ini adalah file system.xml saya


<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
sumber
0

Masalah ini datang karena system.xml. Harap perbaiki sesuai di bawah ini, tab sistem Anda id = " custom_tab " translate = "label" sortOrder = "10"> Dan nama tab di bawah bagian harus sama.

Ashok kumar
sumber