cancel
Showing results for 
Search instead for 
Did you mean: 

System.xml throws an unexpected Error

   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

System.xml throws an unexpected Error

EDIT: I got it fixed. Whoever is interested in the solution:
1) <tab>Neusta</tab> had to become <tab>neusta</tab>

2) <source_model>Neusta\StockTrafficLight\Model\Source\Align</source_model> simply didn't exist. Smiley Very Happy



Hey :-)

I'm currently trying to learn Magento2 and started developing an extension, but sadly my system.xml throws some unexpected errors which I'm not sure how to handle.

 

Notice: Undefined index: id in /magento2/vendor/magento/module-config/Model/Config/Structure/Element/Iterator.php on line 59
#0 /magento2/vendor/magento/module-config/Model/Config/Structure/Element/Iterator.php(59): Magento\Framework\App\ErrorHandler->handler(8, 'Undefined index...', '/magento2/vendo...', 59, Array)
#1 /magento2/vendor/magento/module-config/Model/Config/Structure.php(85): Magento\Config\Model\Config\Structure\Element\Iterator->setElements(Array, 'default')
#2 /magento2/var/generation/Magento/Config/Model/Config/Structure/Interceptor.php(24): Magento\Config\Model\Config\Structure->getTabs()
#3 /magento2/vendor/magento/module-config/Model/Config/Structure.php(108): Magento\Config\Model\Config\Structure\Interceptor->getTabs()
#4 /magento2/var/generation/Magento/Config/Model/Config/Structure/Interceptor.php(50): Magento\Config\Model\Config\Structure->getFirstSection()
#5 /magento2/vendor/magento/module-config/Controller/Adminhtml/System/AbstractConfig.php(50): Magento\Config\Model\Config\Structure\Interceptor->getFirstSection()
#6 [internal function]: Magento\Config\Controller\Adminhtml\System\AbstractConfig->dispatch(Object(Magento\Framework\App\Request\Http))
#7 /magento2/vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#8 /magento2/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callParent('dispatch', Array)
#9 /magento2/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...')
#10 /magento2/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))
#11 [internal function]: Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#12 /magento2/vendor/magento/framework/Interception/Chain/Chain.php(67): call_user_func_array(Array, Array)
#13 /magento2/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, 'designLoader')
#14 /magento2/vendor/magento/framework/App/Action/Plugin/Design.php(39): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#15 [internal function]: Magento\Framework\App\Action\Plugin\Design->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#16 /magento2/vendor/magento/framework/Interception/Chain/Chain.php(67): call_user_func_array(Array, Array)
#17 /magento2/vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Config\\...', 'dispatch', Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Array, 'adminMassaction...')
#18 /magento2/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))
#19 [internal function]: Magento\Backend\App\Action\Plugin\MassactionKey->aroundDispatch(Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#20 /magento2/vendor/magento/framework/Interception/Interceptor.php(140): call_user_func_array(Array, Array)
#21 /magento2/var/generation/Magento/Config/Controller/Adminhtml/System/Config/Index/Interceptor.php(40): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callPlugins('dispatch', Array, Array)
#22 /magento2/vendor/magento/framework/App/FrontController.php(55): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#23 [internal function]: Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#24 /magento2/vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#25 /magento2/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#26 /magento2/vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
#27 /magento2/vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#28 [internal function]: Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#29 /magento2/vendor/magento/framework/Interception/Interceptor.php(140): call_user_func_array(Array, Array)
#30 /magento2/var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#31 /magento2/vendor/magento/framework/App/Http.php(115): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#32 /magento2/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#33 /magento2/index.php(40): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#34 {main}

My system.xml looks like this:

 

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../Magento/Config/etc/system_file.xsd">
    <system>
        <tab id="neusta" translate="label" sortOrder="10">
            <label>Neusta</label>
        </tab>
        <section id="neusta_stocktraffclight" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>Neusta_StockTrafficLight</label>
            <tab>Neusta</tab>
            <resource>Neusta_StockTrafficLight::neusta_stocktraffclight</resource>
            <group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
                <label>General</label>
                <field id="enable" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Stock Traffic Light</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <comment>
                        Enable 'Stock Traffic Lights'.
                    </comment>
                </field>
                <field id="block_label" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Block Label</label>
                </field>
                <field id="text_align" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Text Align</label>
                    <source_model>Neusta\StockTrafficLight\Model\Source\Align</source_model>
                </field>
            </group>
        </section>
    </system>
</config>

Can anybody give me a hint what's wrong?

Cheerz! Smiley Happy

5 REPLIES 5

Re: System.xml throws an unexpected Error

Did you manage to fix it? I am having same issue.

 

Please help.

Re: System.xml throws an unexpected Error

 

class Align implements \Magento\Framework\Option\ArrayInterface
{
   public function toOptionArray()
    {
        return [
                         ['value' => -1, 'label' => __('None')],
                          ['value' => 0, 'label' => __('0%')],
         ];
    }
}

Did you over ride the Arrayinterface and toOptinArray in your source model file Align.

 

Re: System.xml throws an unexpected Error

Remove Tab id.

like <tab>netus</tab>

 

Re: System.xml throws an unexpected Error

Your tab id is:

<tab id="neusta"

And you put:

<tab>Neusta</tab>

Correct way is to be exactly the same like id name so:

<tab>neusta</tab>

Not a capital letter.

Re: System.xml throws an unexpected Error

Hi @ShivaHaze 

 

Replace below code in your system.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../Magento/Config/etc/system_file.xsd">
    <system>
        <tab id="neusta" translate="label" sortOrder="10">
            <label>Neusta</label>
        </tab>
        <section id="neusta_stocktraffclight" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>Neusta StockTrafficLight</label>
            <tab>neusta</tab>
            <resource>Neusta_StockTrafficLight::neusta_stocktraffclight</resource>
            <group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
                <label>General</label>
             <field id="enable" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Stock Traffic Light</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <comment>
                        Enable 'Stock Traffic Lights'.
                    </comment>
                </field>
                <field id="block_label" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Block Label</label>
                </field>
                <field id="text_align" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Text Align</label>
                    <source_model>Neusta\StockTrafficLight\Model\Source\Align</source_model>
                </field>  
            </group>
        </section>
    </system>
</config>

I think you had already created Neusta\StockTrafficLight\Model\Source\Align file right?

The error in your code was that, you need to use tab id inside section tab. By mistake I think you had used tab id by capital letter.

 

Let me know if it worked.