Joomla 2.5:一种自定义表单字段类型,用于呈现更多字段并支持表单会话
在我的组件中,我希望有一个具有自定义字段类型的管理表单。这个自定义字段实际上加载另一个xml表单定义文件,并呈现其中定义的这些字段。在自定义字段类中,如下所示:Joomla 2.5:一种自定义表单字段类型,用于呈现更多字段并支持表单会话,joomla,joomla2.5,joomla-extensions,Joomla,Joomla2.5,Joomla Extensions,在我的组件中,我希望有一个具有自定义字段类型的管理表单。这个自定义字段实际上加载另一个xml表单定义文件,并呈现其中定义的这些字段。在自定义字段类中,如下所示: <?php class CustomField extends JFormField { protected function getInput() { $form = JForm::getInstance("another_form", "path/to/xml"); $fiel
<?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;
}
}
getFieldset());
$html=“”;
foreach($field\u name作为$name){
$field=$form->getField($name);
$html.=“”$field->getLabel().$field->getInput().“ ”;
}
返回$html;
}
}
它呈现得很好,但如何使这些额外字段与管理表单平滑集成,以便:
- 提交后,额外字段将与其他字段一样自动填充最后的输入数据(会话集成)
- 如果可能,额外字段将被视为管理表单的一部分,具有所有保存和加载功能(假设数据库表中有这些字段的相应列)
谢谢 首先,我建议避免完全使用外部文件,并为您的配置定义标准元素 如果您希望继续: 创建自定义元素时,使用name属性读取/写入值:即
protected function getInput() {
return "<input type='hidden' name='$this->name' />";
}
受保护的函数getInput(){
返回“”;
}
因此,如果希望Joomla处理值的存储,则需要添加一个类似于上面的输入(隐藏)来保存所有自定义输入值。可以将两个脚本绑定到自定义元素:一个脚本将自定义输入字段中的所有值打包为json字符串,并将隐藏字段的值设置为该json字符串(删除\n!);另一个onload恢复值。确保在json中使用字段名,这样,如果添加/更改xml结构,配置将继续有效
然而,这将产生一个糟糕的结果,因为组件的参数已经是json格式,所以您将在json中使用json进行组件配置。丑陋,但不应该造成太多问题