Joomla Custom Component - 加载表单文件时出错

时间:2016-02-05 15:28:46

标签: php joomla3.0 joomla-component

目前,我一直在努力熟悉Joomla 3.4.8的自定义组件编程。因此,我已经在我的Raspberry Pi 2上安装了一个新的joomla网站用于测试目的。一切都在努力。

然后我开始做' Developing an MVC Component' Joomla本身提供的教程。一切正常,直到第7点' Using the database'。

虽然这一点谈到了数据库,但问题是让字段类型起作用。即当我想添加一个新的菜单项(在管理员部分中),并且我选择自定义菜单项类型时,我收到一个错误,指出"加载表单文件错误"。

我一直试图找错误几天,但没有成功。我甚至到目前为止跟踪joomla框架内部的代码行会引发此错误。代码行在/libraries/legacy/model/form.php内(第192行)。在此行,您可以看到$this->preprocessForm($form, $data);。但不知何故,代码甚至没有输入此方法,它只是抛出异常。

我通过在第192行之前添加以下语句(找到here),将$form$data变量与正常运行中的变量进行了比较:

 echo "<pre>"; print_r($arr); echo "</pre>"; 

$form变量没有任何区别。但$data变量略有不同。不幸的是,我对这些概念很陌生,所以我真的不知道可能出现什么问题或者在哪里搜索问题。

希望你们中的某些人可以帮助我......

完成此处是触发错误时$data变量的输出:

    Array
(
    [parent_id] => 1
    [level] => 
    [lft] => 
    [rgt] => 
    [alias] => 
    [id] => 
    [menutype] => mainmenu
    [title] => 
    [note] => 
    [path] => 
    [link] => index.php?option=com_helloworld&view=helloworld
    [type] => component
    [published] => 
    [component_id] => 10000
    [checked_out] => 
    [checked_out_time] => 
    [browserNav] => 0
    [access] => 
    [img] => 
    [template_style_id] => 0
    [params] => Array
        (
            [menu-anchor_title] => 
            [menu-anchor_css] => 
            [menu_image] => 
            [menu_text] => 1
            [page_title] => 
            [show_page_heading] => 
            [page_heading] => 
            [pageclass_sfx] => 
            [menu-meta_description] => 
            [menu-meta_keywords] => 
            [robots] => 
            [secure] => 0
        )
    [home] => 0
    [language] => 
    [client_id] => 
    [request] => Array
        (
            [option] => com_helloworld
            [view] => helloworld
        )
    [menuordering] => 0
    [toggle_modules] => 1
)

1 个答案:

答案 0 :(得分:0)

好!我终于解决了这个问题。不幸的是,这是一个非常愚蠢的错误......

首先,我注意到方法preprocessForm($form, $data)已被子类覆盖。因此我的echo语句不会被执行。这让我陷入了加载<joomla-root>/components/com_helloworld/views/helloworld/tmpl/default.xml的xml文件的程度。

不幸的是它不起作用。这是由于xml文件中的一个小错误。错误非常简单和愚蠢:

<fieldset name="request">
        <field
            name="id"
            type="helloworld"
            label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"
            description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC" 
            />
        </field>
</fieldset>

我只关闭了field代码两次,其中第二个结束标记用于本教程的上一步。

非常愚蠢的错误,花了我几个小时。至少我对joomla代码有一些见解。希望这篇文章可以避免其他人在无数小时内搜索这样一个小错误。