Magento 2 – Fix ‘Resource’ Element Attribute ‘Title’ Required Error in Admin

admin-panelerrormagento2

I've installed an extension mageplaza SMTP extension and after that, I'm getting this error. `1 exception(s):

Exception #0 (LogicException): Could not create an acl object: Invalid
Document Element 'resource': The attribute 'title' is required but
missing. Line: 26

Exception #0 (LogicException): Could not create an acl object: Invalid
Document Element 'resource': The attribute 'title' is required but
missing. Line: 26

#1 Magento\Framework\Acl\Builder\Proxy->getAcl() called at [vendor/magento/module-backend/Model/Auth/Session.php:227]
#2 Magento\Backend\Model\Auth\Session->processLogin() called at [generated/code/Magento/Backend/Model/Auth/Session/Interceptor.php:102]
#3 Magento\Backend\Model\Auth\Session\Interceptor->processLogin() called at [vendor/magento/module-backend/Model/Auth.php:159]
#4 Magento\Backend\Model\Auth->login('admin', 'Hemant12@') called at [vendor/magento/framework/Interception/Interceptor.php:58]
#5 Magento\Backend\Model\Auth\Interceptor->___callParent('login', array('admin', 'Hemant12@')) called at [vendor/magento/framework/Interception/Interceptor.php:138]
#6 Magento\Backend\Model\Auth\Interceptor->Magento\Framework\Interception\{closure}('admin', 'Hemant12@') called at [vendor/magento/framework/Interception/Interceptor.php:153]
#7 Magento\Backend\Model\Auth\Interceptor->___callPlugins('login', array('admin', 'Hemant12@'), array(array('security_admin_s...'))) called at [generated/code/Magento/Backend/Model/Auth/Interceptor.php:78]
#8 Magento\Backend\Model\Auth\Interceptor->login('admin', 'Hemant12@') called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:205]
#9 Magento\Backend\App\Action\Plugin\Authentication->_performLogin(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:157]
#10 Magento\Backend\App\Action\Plugin\Authentication->_processNotLoggedInUser(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:125]
#11 Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(&Magento\Backend\Controller\Adminhtml\Index\Index\Interceptor#0000000066b1f086000000003b319431#, &Closure#0000000066b1f084000000003b319431#, &Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/framework/Interception/Interceptor.php:135]
#12 Magento\Backend\Controller\Adminhtml\Index\Index\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
#13 Magento\Backend\Controller\Adminhtml\Index\Index\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#), NULL) called at [generated/code/Magento/Backend/Controller/Adminhtml/Index/Index/Interceptor.php:39]
#14 Magento\Backend\Controller\Adminhtml\Index\Index\Interceptor->dispatch(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/framework/App/FrontController.php:55]
#15 Magento\Framework\App\FrontController->dispatch(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
#16 Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
#17 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
#18 Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#), array(array('default_store_se...', 'storeCookieValid...', 'install', 'configHash'))) called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
#19 Magento\Framework\App\FrontController\Interceptor->dispatch(&Magento\Framework\App\Request\Http#0000000066b1f271000000003b319431#) called at [vendor/magento/framework/App/Http.php:136]
#20 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
#21 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:257]
#22 Magento\Framework\App\Bootstrap->run(&Magento\Framework\App\Http\Interceptor#0000000066b1f23f000000003b319431#) called at [index.php:39]

Best Answer

You can fix it by putting a title in resource in acl.xml file:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Backend::admin">
                <resource id="Mageplaza_Core::menu" title="Mageplaza Menu">
                    <resource id="Mageplaza_Smtp::smtp" title="Mageplaza Smtp" translate="title" sortOrder="45">
                        <resource id="Mageplaza_Smtp::log" title="Emails Log" translate="title" sortOrder="10"/>
                    </resource>
                </resource>
                <resource id="Magento_Backend::stores">
                    <resource id="Magento_Backend::stores_settings" title="Mageplaza Settings">
                        <resource id="Magento_Config::config" title="Mageplaza Config">
                            <resource id="Mageplaza_Smtp::configuration" title="Mageplaza Smtp"/>
                        </resource>
                    </resource>
                </resource>
            </resource>
        </resources>
    </acl>
</config>
Related Topic