I am trying to create a custom system configuration but I am having trouble getting the values.
I created a simple module like in this tutorial. So:
app/code/Mageplaza/HelloWorld/etc/module.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Mageplaza_HelloWorld" setup_version="1.0.0" /> </config> app/code/Mageplaza/HelloWorld/registration.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Mageplaza_HelloWorld', __DIR__ ); ?> app/code/Mageplaza/HelloWorld/etc/frontend/routes.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="standard"> <route id="mageplaza" frontName="helloworld"> <module name="Mageplaza_HelloWorld" /> </route> </router> </config> Then is followed this tutorial to create the system config:
app/code/Mageplaza/HelloWorld/etc/adminhtml/system.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd"> <system> <tab id="mageplaza" translate="label" sortOrder="10"> <label>Mageplaza</label> </tab> <section id="helloworld" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1"> <class>separator-top</class> <label>Hello World</label> <tab>mageplaza</tab> <resource>Mageplaza_HelloWorld::hello_configuration</resource> <group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0"> <label>General Configuration</label> <field id="enable" translate="label" type="select" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0"> <label>Module Enable</label> <source_model>Magento\Config\Model\Config\Source\Yesno</source_model> </field> <field id="display_text" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0"> <label>Display Text</label> <comment>This text will display on the frontend.</comment> </field> </group> </section> </system> </config> app/code/Mageplaza/HelloWorld/etc/config.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd"> <default> <helloworld> <general> <enable>1</enable> <display_text>Hello World</display_text> </general> </helloworld> </default> </config> Mageplaza/HelloWorld/Helper/Data.php
<?php namespace Mageplaza\HelloWorld\Helper; use Magento\Framework\App\Helper\AbstractHelper; use Magento\Store\Model\StoreManagerInterface; use Magento\Framework\ObjectManagerInterface; use Magento\Framework\App\Helper\Context; use Magento\Store\Model\ScopeInterface; class Data extends AbstractHelper { protected $storeManager; protected $objectManager; const XML_PATH_HELLOWORLD = 'helloworld/'; public function __construct(Context $context, ObjectManagerInterface $objectManager, StoreManagerInterface $storeManager ) { $this->objectManager = $objectManager; $this->storeManager = $storeManager; parent::__construct($context); } public function getConfigValue($field, $storeId = null) { return $this->scopeConfig->getValue( $field, ScopeInterface::SCOPE_STORE, $storeId ); } public function getGeneralConfig($code, $storeId = null) { return $this->getConfigValue(self::XML_PATH_HELLOWORLD . $code, $storeId); } } I can see the config but when I try to request the values like this:
$helper = $this->objectManager->create('Mageplaza\HelloWorld\Helper\Data'); echo $helper->getGeneralConfig('enable'); echo $helper->getGeneralConfig('display_text'); I get an error:
1 exception(s): Exception #0 (Exception): Notice: Undefined property: Mageplaza\HelloWorld\Controller\Index\Display\Interceptor::$objectManager