0

在我的组件中,我想要一个具有自定义字段类型的管理表单。这个自定义字段实际上加载了另一个 xml 表单定义文件并呈现其中定义的这些字段。在自定义字段类中是这样的:

<?php

class CustomField extends JFormField
{
    protected function getInput()
    {
        $form = JForm::getInstance("another_form", "path/to/xml");
        $field_names = array_keys($form->getFieldset());

        $html = "";
        foreach ($field_names as $name) {
            $field = $form->getField($name);
            $html .= "<li>" . $field->getLabel() . $field->getInput() . "</li>";
        }

        return $html;
    }

}

它渲染得很好,但我怎样才能使这些额外的字段与管理表单顺利集成,以便:

  • 提交后,额外的字段将自动填充最后输入的数据,如其余字段(会话集成)
  • 如果可能,额外的字段将被视为管理表单的一部分,具有所有保存和加载功能(假设数据库表具有这些字段的对应列)

谢谢!

4

1 回答 1

2

首先,我建议完全避免使用外部文件并为您的配置定义标准元素。

但是,如果您希望继续:

当您创建自定义元素时,使用 name 属性读取/写入值:即

protected function getInput() {
    return "<input type='hidden' name='$this->name' />";
}

因此,如果您希望 Joomla 处理值的存储,则需要添加一个像上面那样的输入(隐藏)来保存所有自定义输入值。您可以将两个脚本绑定到您的自定义元素:一个将自定义输入字段中的所有值打包成一个 json 字符串,并将隐藏字段的值设置为此 json 字符串(删除 \n!);另一个 onload 恢复值。确保您在 json 中使用字段名称,以便在添加/更改 xml 结构时您的配置将继续存在。

然而,这将产生一个丑陋的结果,因为组件的参数已经是 json 格式,您将在 json.json 中使用 json 配置组件。丑陋,但它不应该造成太多问题。

于 2013-02-06T22:00:01.390 回答