Joomla 3.x组件更新配置到数据库

时间:2017-07-13 15:35:05

标签: joomla configuration joomla-component joomla3.5

我刚开始使用Joomla,我一直在关注创建Hello World组件教程。经过一些重大的头痛并一遍又一遍地开始,我终于到了某个地方

我现在有一个工作组件,在我的组件选项中,我有一个由SQL查询填充的下拉列表,如我的admin/config.xml

所示
<?xml version="1.0" encoding="utf-8"?>
<config>
    <fieldset
        name="greetings"
        label="COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_LABEL"
        description="COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_DESC"
    >
        <field 
            name="greeting" 
            type="sql" 
            label="Select an article" 
            query="SELECT id, greeting FROM #__helloworld" 
            key_field="id" />
    </fieldset>
    <fieldset
        name="permissions"
        label="JCONFIG_PERMISSIONS_LABEL"
        description="JCONFIG_PERMISSIONS_DESC"
    >
        <field
            name="rules"
            type="rules"
            label="JCONFIG_PERMISSIONS_LABEL"
            class="inputbox"
            validate="rules"
            filter="rules"
            component="com_helloworld"
            section="component"
        />
    </fieldset>
</config>

我遇到了同问这个问题How to set Component parameters in J2.5?

的问题

我想选择一个选项并更新我的组件表,以便在另一列(默认)中更新所选选项的ID。

params字段没有更新,看起来似乎没有做任何事件,尽管它可能是。

admin/models文件夹中是否有一个类我应该更新以更新数据库,如果有,我该放什么?我一直在寻找几个小时,我遇到的任何答案只是给出了代码,而不是将它放在什么功能

1 个答案:

答案 0 :(得分:0)

扩展配置数据存储在params列下的#__extensions表中,作为json。

查看我的IDE中的joomla源代码似乎没有更新扩展参数的包装器,因此像下面的查询必须这样做。

$query = $db->getQuery(true)
    ->update('#__extensions')
    ->set('params= ' . json_encode($params))
    ->where('element= ' . $extensionName)
;

$db->setQuery($query);

$result = $db->execute();

仅供参考,查询未经测试,只是所需方法的一个示例