是否可以在config.xml中添加变量?

时间:2016-08-22 16:10:24

标签: magento magento-1.9

我有以下xml:

<config>
    <global>
       <resources>
         <dbresource>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[root]]></username>
                <password><![CDATA[1234]]></password>
                <dbname><![CDATA[db_test]]></dbname>
            </connection>
        </dbresource>
      ...
  ...

我想在admin_core_data中添加所有这些信息,例如(主机,用户名,密码和dbname),并读取它们以连接到外部数据库。我知道如何使用system.xml读取/写入admin_core_data数据。

我可以使用config.xml连接到外部数据库,但我需要让员工在&#34; admin / system / configuration&#34;中轻松更改它。因为他们无法编辑xml文件。

或任何其他想法的人,在这种情况下该怎么做?

任何建议人员?

谢谢..

2 个答案:

答案 0 :(得分:1)

您可以通过稍微不同的方法来实现该功能。添加新的system.xml,然后需要更新madel文件中的数据库配置。

const XML_CONFIG_EDB_HOST = 'edb_settings/dbconnection/host';
const XML_CONFIG_EDB_DBNAME = 'edb_settings/dbconnection/dbname';
const XML_CONFIG_EDB_USERNAME = 'edb_settings/dbconnection/username';
const XML_CONFIG_EDB_PASSWORD = 'edb_settings/dbconnection/password';
const EXTERNAL_RESOURCE_NAME = 'edb_connection';

/* @var array */

protected $_config;

/* @var Varien_Db_Adapter_Pdo_Mysql */
protected $_connection;

public function __construct() {
    $this->_setConnection();
}

/**
 * Gets the Config Settings in the Admin Settings for DB Connection
 * @return array
 */
public function getConfig() {
    if (!$this->_config) {
        $this->_config = array();
        // Setting the Values from the Admin Config
        $this->_config['host'] = Mage::getStoreConfig(self::XML_CONFIG_EDB_HOST);
        $this->_config['dbname'] = Mage::getStoreConfig(self::XML_CONFIG_EDB_DBNAME);
        $this->_config['username'] = Mage::getStoreConfig(self::XML_CONFIG_EDB_USERNAME);
        $this->_config['password'] = Mage::getStoreConfig(self::XML_CONFIG_EDB_PASSWORD);

        // Setting the default Values
        $this->_config['initStatements'] = 'SET NAMES utf8';
        $this->_config['model'] = 'mysql4';
        $this->_config['type'] = 'pdo_mysql';
        $this->_config['pdoType'] = '';
        $this->_config['active'] = '1';
    }
    return $this->_config;
}

/**
 * Gets External DB Connection Resource
 *
 * @return Varien_Db_Adapter_Pdo_Mysql
 */
public function getConnection() {
    if (!$this->_connection) {
        $this->_setConnection();
    }
    return $this->_connection;
}

private function _setConnection() {
    if (!$this->_connection) {
        $this->_connection = Mage::getSingleton('core/resource')->createConnection(self::EXTERNAL_RESOURCE_NAME, 'pdo_mysql', $this->getConfig());
    }
}

public static function getConnectionName() {
    return self::EXTERNAL_RESOURCE_NAME;
}

您可以从以下链接中获取参考 External database configuration

答案 1 :(得分:0)

您可以使用Magento标准方式获取商店配置。

$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName'); sectionName,groupName和fieldName应在模块的etc/system.xml文件中定义。

以上代码将自动获取当前查看商店的配置值。

检查一些system.xml文件以查看它在Magento中的定义,以便您轻松将其添加到模块中。