在 joomla 3.4.1 上获取组件参数 return 空值

Get component parameters return empty value on joomla 3.4.1

我在管理部分的组件中有我的 "config.xml",配置输入在 Joomla 的管理上没有问题。

例如,我有一个带有 "my_custom_test" 的字段,我设置了一个值,例如 "test"。我点击 "save" 按钮。

如果我在一个视图中并且我想获得我的价值,我正在写那个

$compo_params = JComponentHelper::getParams('com_xxxxx');
var_dump($compo_params).'<br />';
echo $compo_params->get('my_custom_test', 'EMPTY');

结果是

object(Joomla\Registry\Registry)#19 (2) { ["data":protected]=> object(stdClass)#20 (1) { ["params"]=> object(stdClass)#57 (1) { ["my_custom_test"]=> string(4) "test" } } ["separator"]=> string(1) "." }
EMPTY

结果是 "EMPTY" 而不是 "test"。

你有什么想法吗?

解决方法是

echo $compo_params->get('params')->my_custom_test;

其实我已经找到了问题的根源,是在组件config.xml文件中。如果您将参数包含在标签中(这是过去 Joomla 的标准做法),那么参数将存储在一个名为 "params" 的对象中,例如

<?xml version="1.0" encoding="utf-8"?>
<config>
<fields name="params" label="Some label">
<fieldset name="basic" label="Basic Options" description="">
     <field name="some_option" label="label" type="text" description="" />
</fieldset>
</fields>
</config>

要更正此问题,只需省略标签:-

<?xml version="1.0" encoding="utf-8"?>
<config>
<fieldset name="basic" label="Basic Options" description="">
     <field name="some_option" label="label" type="text" description="" />
</fieldset>
</config>

如果您查看任何核心 Joomla 组件 config.xml 文件,这就是他们现在的做法。

那么获取组件参数的标准方法就起作用了:-

$compo_params = JComponentHelper::getParams('com_xxxxx');
$my_custom_test = $compo_params->get('my_custom_test', '');