繁体   English   中英

Joomla自定义组件-加载表单文件时出错

[英]Joomla Custom Component - Error loading form file

目前,我一直在尝试熟悉Joomla 3.4.8的自定义组件的编程。 因此,出于测试目的,我在Raspberry Pi 2上安装了一个新的joomla网站。 一切都按预期进行。

然后,我开始做由Joomla本身提供的“ 开发MVC组件 ”教程。 一切正常,直到第7点“ 使用数据库 ”为止。

尽管这是关于数据库的,但问题是要使字段类型起作用。 即,当我想添加新菜单项(在管理员部分),并且选择自定义菜单项类型时,出现错误,提示“加载表单文件时出错”。

我已经尝试了几天的错误,但没有成功。 我什至走得很远,在joomla框架内跟踪代码行,这引发了此错误。 代码行位于/libraries/legacy/model/form.php (第192行)。 在这一行中,您可以看到$this->preprocessForm($form, $data); 但是某种程度上,代码甚至没有输入此方法,它只是引发了一个异常。

通过在第192行之前添加以下语句(在此处找到),我将$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
)

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

首先,我注意到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代码有一些见识。 希望这篇文章可以避免其他人在无数小时内搜索出如此小的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM