【问题标题】:Access Function in Controller From Helper从 Helper 访问控制器中的函数
【发布时间】:2010-11-04 17:02:44
【问题描述】:

我几个小时前才开始使用 CodeIgniter,但遇到了一些问题。我正在尝试调用一个函数,该函数当前位于名为admin.php 的控制器中。我正在尝试从助手那里访问它。我将如何正确地做到这一点?我几乎尝试了所有方法,但似乎没有任何效果,因为我收到以下错误:

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

任何关于这个问题的帮助将不胜感激

【问题讨论】:

  • 助手和库应该独立于应用程序——你不需要从助手或库中调用控制器函数。你能更具体地介绍一下你的助手吗?也许这是属于 Admin 控制器的代码。

标签: php codeigniter


【解决方案1】:

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

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

此外,该错误消息意味着您调用的任何东西都没有被正确实例化。所以你可能正在做类似的事情:

$this->load();

从助手内部。但是,在助手中,

$this
未定义(因此出现“非对象”错误)。 CodeIgniter 提供了一种从控制器外部加载模型、库和视图的方法。但是,据我所知,它不允许您为控制器执行此操作。不过没关系,因为上面提到的原因。引入依赖项时必须小心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多