ข้อผิดพลาดในการกำหนดค่าของผู้ดูแลระบบ: ดัชนีที่ไม่ได้กำหนด: id ใน Iterator.php ที่บรรทัด 59


17

ใครช่วยอธิบายข้อผิดพลาดนี้ให้ฉันได้บ้าง

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}

สวัสดีคุณติดตั้งส่วนขยายใหม่หรือไม่
Meetanshi

อาจเป็นข้อผิดพลาดในโมดูล xml ของคุณ (system.xml, acl.xml และอื่น ๆ ) วางรหัสของคุณถ้าคุณทำได้
Chander Shekhar

มีปัญหาเดียวกันหลังจากติดตั้ง github.com/mageplaza/magento-2-better-popup extension โดยการดาวน์โหลด แต่เมื่อติดตั้งผ่านผู้แต่งมันใช้งานได้ดี ฉันต้องเปลี่ยนฟังก์ชั่นการใช้งานซึ่งเป็นสาเหตุที่ไม่สามารถติดตั้งโดยผู้แต่ง ใครมีวิธีแก้ปัญหานี้
Ajwad Syed

คำตอบ:


31

ฉันพบปัญหาที่คล้ายกันและในกรณีของฉันปัญหาเกิดขึ้นเนื่องจากฉันมีการจับคู่แท็บ id ไม่ถูกต้อง 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>

เพื่อแก้ไขปัญหาฉันเปลี่ยน
<tab>customtab</tab>
เป็น
<tab>custom_tab</tab>


สวัสดี @ Anshu Mishra คำตอบข้างต้นจะช่วยฉัน แต่เมื่อฉันปิดการใช้งานโมดูลจากด้านผู้ดูแลระบบมันไม่ได้ลดลง
shivashankar m

7

วิธีง่าย ๆ ในการแก้ไขปัญหาคือเรียกดูและเปิดผู้ขาย / magento / module-config / รุ่น / การกำหนดค่า / โครงสร้าง / องค์ประกอบ / Iterator.php

เปลี่ยนแปลง

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

ถึง

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

โหลดหน้าต่างการกำหนดค่าเบราว์เซอร์ใหม่และดูข้อผิดพลาดอีกครั้ง

ตรวจสอบไฟล์ var / log / config_debug.log

ไปที่ด้านล่างสุดของไฟล์และดูโมดูลที่ล้มเหลวซึ่งหยุดทำงาน

นั่นเป็นสาเหตุหนึ่งที่ทำให้เกิดปัญหาของคุณ

อย่าลืมย้อนกลับการเปลี่ยนแปลงของคุณเมื่อแก้ไขแล้ว


6

ในกรณีของฉันเกิดข้อผิดพลาดเนื่องจากแท็บถูกกำหนดในโมดูลที่ปิดใช้งาน แต่ใช้ในโมดูลอื่นซึ่งเปิดใช้งาน ดังนั้นฉันขอแนะนำให้คุณตรวจสอบว่าแท็บใดไม่มีidในคลาสที่ระบุ:

ตัวอย่างการแก้ปัญหา

จากนั้นค้นหาชื่อตามโครงการทั้งหมด (ในsystem.xmlไฟล์) และตรวจสอบว่าโมดูลนั้นเปิดใช้งาน

PS : ไม่มีข้อผิดพลาดบนภาพหน้าจอ แต่อันที่จริงมันถูกไล่ออกจากDeliveryTimeโมดูลเพราะCoreโมดูลถูกปิดการใช้งานเมื่อฉันพยายามเข้าถึงหน้าการกำหนดค่าร้านค้า


3

ในกรณีของผมผมได้ติดตั้งhttps://www.mageplaza.com/magento-2store-credit/ขยาย แต่ไม่ได้ติดตั้งโมดูลหลักของ Mageplaza

ฉันพบว่า<tab>mageplaza</tab>mentined ในsystem.xmlแต่แท็บไม่ได้กำหนดไว้ในแฟ้มนี้ ดังนั้นติดตั้งโมดูลหลักสำหรับ Mageplaza จากhttps://github.com/mageplaza/module-core และทำงานได้ดี


ขอบคุณ @nalin savaliya
Pradip Garchar

เหมือนกันที่นี่ยกเว้นว่าฉันมีโมดูลที่ติดตั้งผ่านผู้แต่ง แต่มันไม่ได้เปิดใช้งาน bin/magento module:enable Mageplaza_Coreคงที่
โทมัส Luzat

1

ฉันยังต้องเผชิญกับปัญหานี้ใน magento2 นี่คือไฟล์ system.xml ของฉัน


<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"

0

ปัญหานี้เกิดขึ้นเนื่องจาก system.xml โปรดแก้ไขตามด้านล่างแท็บระบบของคุณ id = " custom_tab " translate = "label" sortOrder = "10"> และชื่อแท็บใต้ส่วนควรเหมือนกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.