我正在学习“学习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, 西蒙
答案 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变量添加到交换机内的函数调用中,让我们知道是否有任何改变......