我有以下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文件。
或任何其他想法的人,在这种情况下该怎么做?
任何建议人员?
谢谢..
答案 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中的定义,以便您轻松将其添加到模块中。