【问题标题】:How to load helper from model in CodeIgniter?如何从 CodeIgniter 中的模型加载帮助程序?
【发布时间】:2010-12-13 10:28:05
【问题描述】:

我想在模型中加载一些助手。这个怎么做?尝试使用:

${get_parent_class($this)}->load->helper ('text');

但还是报错

致命错误:在非对象上调用成员函数 helper()

【问题讨论】:

    标签: php class codeigniter


    【解决方案1】:

    GSto 回答了$this->load->helper('helpername'),但如果您在模型的方法中,$this 只是指该模型的(类)实例而不是 CI 全局。那是行不通的!

    相反,您需要加载 CI 全局,然后加载帮助程序:

    // PHP 4
    // $ci =& get_instance();
    // PHP 5    
    $ci = get_instance();
    $ci->load->helper('text');
    

    【讨论】:

    【解决方案2】:

    你不需要在模型中加载帮助器。只需在控制器中加载帮助器并在模型中使用函数,就像我们通常在控制器中使用帮助器函数一样

    【讨论】:

    • 您应该使用示例代码更清楚地说明这一点
    • 抱歉,这不太正确。有时在模型方法中需要帮助器来进行清理等。
    【解决方案3】:
    $this->load->helper('helpername')
    

    【讨论】:

    • $this 指的是应用程序实例,它不能从模型中可靠地访问。 MWM 是正确的,通过分配(byref)CI 应用程序的一个实例并使用 $CI->load->helper('foo') 访问它。
    • 除非您加载了 CI 对象,否则帮助程序不可用。请参阅 mwm 的回答。
    【解决方案4】:

    我认为 CI 不会检查助手重复... CI 助手是程序文件,如果你的控制器加载了与你的模型相同的助手(即加载在该控制器中),你可能会包含你的助手两次。也许做一个图书馆...

    我可以看到我在没有任何 cmets 的情况下获得了反对票...通过从核心 CI 检查加载器类你可以看到帮助方法不是检查帮助器之前是否已加载(它不包含在 is_loaded() 数组中像大多数通过加载工厂类加载的类一样)......无论如何我不建议在模型和控制器中加载帮助器......例如,我为我在控制器中使用的输出编码制作了一个帮助器(在我将数据传递给看法) 。如果我两次更改视图状态,那将是非常糟糕的......

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 2018-01-14
      • 2012-01-27
      • 1970-01-01
      • 2013-06-05
      • 2016-02-09
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多