如何动态设置组件的参数?


9

要获取参数,请使用:

$myparam = JComponentHelper::getParams('com_mycomponent')->get('myparam');

但是,存储组件参数的正确方法是什么?


我的意思是除了使用“选项”按钮外
COBIZ webdevelopment 2015年

如果不使用选项按钮,那么如何获取要存储的值?
David Fritsch 2015年

不太了解您的问题。从任何位置,例如在另一个组件控制器中,我想为其他一些组件参数设置新值。
COBIZ网站开发

您可以尝试使用component-creator.com构建组件,并查看将参数添加到组件时生成的代码。
索伦贝克詹森

Answers:


15

我们组件的许多参数取决于外部条件,因此我们需要通过一些通宵处理来定期更改它们。这是我们使用的代码(适用于com_content)。

// Load the current component params.
$params = JComponentHelper::getParams('com_content');
// Set new value of param(s)
$params->set('show_title', 1);

// Save the parameters
$componentid = JComponentHelper::getComponent('com_content')->id;
$table = JTable::getInstance('extension');
$table->load($componentid);
$table->bind(array('params' => $params->toString()));

// check for error
if (!$table->check()) {
    echo $table->getError();
    return false;
}
// Save to database
if (!$table->store()) {
    echo $table->getError();
    return false;
}

1
谢谢。这看起来很棒!因此,我并没有忽略现有的方法,确实确实需要一些额外的代码。测试完后,我会尽快标记您的答案。(但是,由于您已经在使用它,无论如何这可能是正确的答案)
COBIZ webdevelopment 2015年

1
很高兴为您提供帮助...无法按照我的要求跟上Joomla版本,因此可能有一种方法,但是该方法已经为我们服务了一段时间了...干杯
GDP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.