Joomla组件开发:保存,应用和取消工具栏按钮不起作用

时间:2010-08-16 08:01:03

标签: php joomla components

我正在学习“学习Joomla!1.5扩展开发”一书中的组件开发课程。我完全按照本章中的说明创建了一个名为“carousel”的组件。我只创建了Admin后端,我可以查看创建新条目或编辑现有条目的表单,但无法保存或应用更改。单击“保存”,“应用”和“取消”按钮只会将我带到管理员索引页面,但不会更改数据库。但是,如果我使用SQL直接在数据库中添加条目,我可以在管理界面中正确查看它们的列表。

我在Windows XP上使用Joomla 1.5.20,PHP 5.2.3和MySQL 5.0.41。您可以下载“com_carousel”文件夹的zip文件(我在“administrator / components”文件夹中)from here。我还在数据库中正确注册了组件,这样我就能在后端的“组件”菜单下看到它。这是用于创建表“jos_carousel”的SQL:

CREATE TABLE `jos_carousel` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 255 ) NOT NULL ,
`description` TEXT NOT NULL ,
`published` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'
) ENGINE = innodb;

请帮忙。

RGDS, 西蒙

2 个答案:

答案 0 :(得分:2)

我花了一些时间调试您的扩展程序,并找到了您遇到的奇怪行为的原因。您没有将 $ option 变量传递给编辑表单。因此,当提交表单时,Joomla现在不会加载哪个组件来处理请求,这就是为什么它只是呈现主管理页面。

解决此问题的最简单方法是手动将“com_carousel”添加到编辑表单中的隐藏字段(admin.carousel.html.php中的函数editCarousel())。

替换

<input type="hidden" name="option" value="<?php echo $option; ?>" />

使用

<input type="hidden" name="option" value="com_carousel" />

如果你真的想使用$ option变量,你需要从admin.carousel.php文件中传递它。

还有一些东西不起作用(主要是发布/取消发布),但本书稍后会对此进行介绍。完成学习Joomla之后!扩展开发你最好的选择是阅读Mastering Joomla...。我即将完成阅读它,它对我来说是一个非常宝贵的资源。

祝你所有的Joomla好运!扩展名:)

答案 1 :(得分:1)

不确定是否存在问题但在主交换机中使用一个参数调用saveCarousel:

case "apply"://NOT WORKING!
    case "save"://NOT WORKING!
        saveCarousel($option);
        break;

在函数定义中它有两个参数:

function saveCarousel($option, $task)

尝试将$ task变量添加到交换机内的函数调用中,让我们知道是否有任何改变......