我创建了一个J2.5组件与组件的管理文件夹采用的config.xml一些配置领域。
如何设置参数在配置编程?
我试过的代码波纹管,但它显然不将结果保存到数据库:
$params = & JComponentHelper::getParams('com_mycomponent');
$params->set('myvar', $the_value);
任何人都可以请告诉如何做到这一点的例子吗?
我创建了一个J2.5组件与组件的管理文件夹采用的config.xml一些配置领域。
如何设置参数在配置编程?
我试过的代码波纹管,但它显然不将结果保存到数据库:
$params = & JComponentHelper::getParams('com_mycomponent');
$params->set('myvar', $the_value);
任何人都可以请告诉如何做到这一点的例子吗?
要做到这一点,最安全的方法是将包括com_config/models/component.php
,并用它来验证和保存PARAMS。 不过,如果你能以某种方式对数据进行验证PARAMS自己我要坚持以下(更简单的解决方案):
// Get the params and set the new values
$params = JComponentHelper::getParams('com_mycomponent');
$params->set('myvar', $the_value);
// Get a new database query instance
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Build the query
$query->update('#__extensions AS a');
$query->set('a.params = ' . $db->quote((string)$params));
$query->where('a.element = "com_mycomponent"');
// Execute the query
$db->setQuery($query);
$db->query();
注意我是如何铸就PARAMS为字符串(构建查询时),它将JRegistry对象转换为JSON格式的字符串。
如果你得到任何缓存的问题,你可能需要编辑PARAMS后,运行以下命令:
从模型:
$this->cleanCache('_system');
或者,别的地方:
$conf = JFactory::getConfig();
$options = array(
'defaultgroup' => '_system',
'cachebase' => $conf->get('cache_path', JPATH_SITE . '/cache')
);
$cache = JCache::getInstance('callback', $options);
$cache->clean();
该解决方案是在这里...
http://www.webtechriser.com/tutorials/82-joomla-3-0/86-how-to-save-component-parameters-to-database-programmatically
您可以替换的Joomla 2.5+的
// check for error
if (!$table->check()) {
$this->setError('lastcreatedate: check: ' . $table->getError());
return false;
}
if (!$table->store()) {
$this->setError('lastcreatedate: store: ' . $table->getError());
return false;
}
同
if (!$table->save()) {
$this->setError('Save Error: ' . $table->getError());
return false;
}