Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Joomla 2.5:一种自定义表单字段类型,用于呈现更多字段并支持表单会话_Joomla_Joomla2.5_Joomla Extensions - Fatal编程技术网

Joomla 2.5:一种自定义表单字段类型,用于呈现更多字段并支持表单会话

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

在我的组件中,我希望有一个具有自定义字段类型的管理表单。这个自定义字段实际上加载另一个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;
    }

}
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进行组件配置。丑陋,但不应该造成太多问题