我刚开始使用CodeIgniter几个小时前,我遇到了一些问题。我正在尝试调用一个函数,该函数当前位于名为 admin.php 的控制器中。我试图从帮助器访问这个。我该怎么做呢?我几乎尝试了一切,但似乎没有任何工作,因为我收到以下错误:

Fatal error: Call to a member function login() on a non-object

非常感谢有关此问题的任何帮助

有帮助吗?

解决方案

我同意吉米伊。您的帮助程序和库类应独立于应用程序中的任何特定控制器。如果您有“页面标题”,例如,帮助程序,它不应该依赖于管理控制器的任何特定行为。如果您想在另一个没有管理控制器的应用程序中使用页面助手,该怎么办?或者,如果你对管理控制器进行了更改,那么现在你必须确保这些更改不会破坏你的帮助。

如果您的辅助函数需要管理控制器具有的某些特定数据,您可以将其作为函数参数从控制器传递。这样,助手是控制器的依赖,而不是控制器是助手的依赖。

此外,该错误消息表示您正在调用的任何内容尚未正确实例化。所以你可能正在做类似的事情:

$this->load();

来自助手。但是,在帮助器中,

$this
未定义(因此“非对象”错误)。 CodeIgniter提供了一种从控制器外部加载模型,库和视图的方法。但是,据我所知,它不允许你为控制器这样做。由于上述原因,这很好。引入依赖项时要小心。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top