Error de configuración de administrador: índice indefinido: id en Iterator.php en la línea 59

16

¿Alguien puede explicarme este error?

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
fuente
Hola, ¿has instalado alguna extensión nueva?
Meetanshi el
Puede haber un error en su módulo xml (system.xml, acl.xml, etc.) pegue su código si puede.
Chander Shekhar
Al tener el mismo problema, después de instalar la extensión github.com/mageplaza/magento-2-better-popup descargando. Pero cuando se instala a través del compositor, funciona bien. Necesito cambiar su funcionalidad, por eso no puedo instalarlo por compositor. Alguien tiene resolver esto?
Ajwad Syed

Respuestas:

30

Me he enfrentado a un problema similar y en mi caso, el problema fue porque tengo una identificación de pestaña incorrecta en 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>

Para solucionar el problema, cambié
<tab>customtab</tab>
a
<tab>custom_tab</tab>

Anshu Mishra
fuente
Hola @Anshu Mishra, la respuesta anterior me ayudó, pero cuando desactivo el módulo desde el lado del administrador, no se desactiva.
shivashankar m
7

Una forma fácil de depurar es: buscar y abrir vendor / magento / module-config / Model / Config / Structure / Element / Iterator.php

cambio

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

a

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

Vuelva a cargar la ventana de configuración del navegador y vea nuevamente el error.

Verifique el archivo var / log / config_debug.log.

Vaya al final del archivo y vea qué módulo falló, dónde se detuvo.

Esa es la causa de tus problemas.

No olvide revertir sus cambios una vez corregidos.

Tiendas de plata
fuente
5

En mi caso, se produjo el error porque la pestaña se definió en el módulo que está deshabilitado, pero se usó en otro módulo que está habilitado. Por lo tanto, le recomiendo que compruebe qué pestaña no tiene iden la clase especificada:

ejemplo de depuración

Luego, busque ese nombre por proyecto completo (en el system.xmlarchivo) y verifique si ese módulo está habilitado.

PD : no hay ningún error en la captura de pantalla, pero en realidad fue disparado por el DeliveryTimemódulo, porque el Coremódulo se deshabilitó cuando intenté acceder a la página de configuración de la tienda.

Siarhey Uchukhlebau
fuente
3

En mi caso, he instalado https://www.mageplaza.com/magento-2store-credit/ extensión, pero no instalado el módulo central de Mageplaza.

Descubrí que <tab>mageplaza</tab>mencionó system.xmlpero la pestaña no está definida en este archivo. Entonces, instalé el módulo central para Mageplaza desde https://github.com/mageplaza/module-core y está funcionando bien.

Nalin Savaliya
fuente
Gracias @nalin savaliya
Pradip Garchar
Lo mismo aquí, excepto que tenía el módulo instalado a través de Composer, pero no estaba habilitado. bin/magento module:enable Mageplaza_Corearreglado eso.
Thomas Luzat
1

También me he enfrentado a este problema en magento2. Este es mi archivo 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"
Soundararajan m
fuente
0

Este problema viene debido a system.xml. Corrija como se indica a continuación, la pestaña del sistema id = " custom_tab " translate = "label" sortOrder = "10"> Y el nombre de la pestaña en la sección debe ser el mismo.

Ashok kumar
fuente