在我的组件中,我想要一个具有自定义字段类型的管理表单。此自定义字段实际上加载另一个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;
}
}
它渲染得很好,但是如何让这些额外的字段顺利地与管理表单集成,以便:
谢谢!
答案 0 :(得分:2)
首先,我建议完全避免使用外部文件并为您的配置定义标准元素。
如果您希望继续:
创建自定义元素时,使用name属性读取/写入值:即
protected function getInput() {
return "<input type='hidden' name='$this->name' />";
}
因此,如果您希望Joomla处理值的存储,您需要添加一个像上面那样的输入(隐藏)来保存所有自定义输入值。您可以将两个脚本绑定到自定义元素:将自定义输入字段中的所有值打包为json字符串,并将隐藏字段的值设置为此json字符串(remove \ n!);另一个onload恢复值。确保在json中使用字段名称,这样,如果添加/更改xml结构,您的配置将继续存在。
但是这会产生一个丑陋的结果,因为组件的参数已经是json格式,你将在json中使用json进行组件配置。丑陋,但它不应该造成太多问题。