试图在 Joomla 的新组件中添加第二个视图! 3.x
Posted
技术标签:
【中文标题】试图在 Joomla 的新组件中添加第二个视图! 3.x【英文标题】:Trying to add a second view in a new component in Joomla! 3.x 【发布时间】:2014-02-20 08:40:10 【问题描述】:我正在为 Joomla! 开发一个组件! 3.x 和我遇到了一个奇怪的问题。我遵循了官方文档 (http://docs.joomla.org/J3.2:Developing_a_MVC_Component/Adding_backend_actions) 并且能够到达某个地方。现在的问题是我想扩展教程并在后端的组件菜单中创建子菜单。我也成功了。
2 个子菜单选项正确链接到 2 个不同的视图,我能够很好地从不同的表中获取数据。问题是我无法使用第二个视图向数据库添加新条目。第一个视图工作正常。在第二个视图中,当我单击绿色的添加按钮时,出现 jquery 错误:Uncaught TypeError: Cannot read property 'task' of null
问题是 addNew 方法找不到 Municipality.add 什么的。然而,这个(几乎)相同的代码适用于默认视图。
我要做的是在数据库中显示 2 个不同表的数据,然后能够编辑删除或添加新的。
有什么想法吗?提前致谢
【问题讨论】:
【参考方案1】:代码
municipality.add
和
municipalitys.delete
指的是两个不同的控制器,分别命名为municipality.php
和municipalitys.php
您需要确保方法存在,在您的情况下, Municipality.php 应该包含一个
public function add()
不存在。有关如何实现它的参考,请查看其他控制器(您很可能会调用相关模型的 add()
方法)。
或者您可能正在从不实现 add
方法的不同祖先扩展 municipality
控制器
【讨论】:
感谢您的回答。我知道我必须将这些功能作为任务添加到适当的控制器中,但我的问题是为什么默认视图在没有这种暗示的情况下工作?这是第一个视图的控制器的代码。 您的工作控制器扩展了实现 add 方法的 JControllerForm,而另一个控制器很可能没有。 我需要在第二个控制器上添加任何包含来实现它吗?我在这里待了大约 2 个小时,尝试了所有方法,但第二个控制器没有成功,尽管它们是相同的。 此时,你为什么不实现 add() 方法,看看它是否被调用,问题可能出在代码的其他部分阻止访问它,或者安全问题(两个控制器是否使用相同的权限,即 core.edit 还是它们有专用的权限?) 我添加了 add() 函数,但单击新建按钮时仍然出现相同的错误。视图和控制器都完全按照文档中的示例使用。我没有为它们设置任何权限,这可能是默认工作(它与组件具有相同名称)而第二个不工作的原因。基本上我所做的是复制粘贴工作控制器/视图/模型/等更改名称和数据库表,然后使用 &view=secondview 调用它。【参考方案2】:回答我自己的问题,问题出在views/municipalitys/tmpl/default.php 中。
该文件中包含的表单错误,缺少 id="adminForm" 和正确的 action= 值。
【讨论】:
以上是关于试图在 Joomla 的新组件中添加第二个视图! 3.x的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义组件视图中添加 joomla 编辑器但不使用 XML 表单字段?
试图找到在 Joomla 2.5 组件中提取数据库项目的最佳方法