Codeigniter:用户定义的辅助函数不加载

时间:2010-12-25 04:48:29

标签: php codeigniter codeigniter-helpers codeigniter-classloader

我做了一个自定义助手,扩展了系统string_helper.php。

我将它放在我的/application/helpers目录中,根据需要将其命名为MY_string_helper.php,对其功能进行单元测试。

现在,当我尝试从模型中调用其中一个函数时,它不起作用。

默认字符串帮助程序中的函数可以使用。看起来我的扩展程序由于某些原因未加载。

非常感谢,节日快乐。


编辑:甚至更有趣。我将文件保存为categories_helper.php目录中的system/helpers,当我尝试在模型中加载它时,得到以下响应:*无法加载请求的文件:helpers / categories_helper.php * < / p>

6 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我来自我的codeigniter项目的Windows OS开发,然后转移到Ubuntu,但不知怎的,它仍然没有加载我的助手。

我发现将命名约定更改为小写可以解决问题。不要按照文档中写入的内容来插入前缀,特别是如果它是大写的。使用小写。

答案 1 :(得分:1)

Codeigniter User Guide for helpers描述了助手只能用于控制器和视图。它没有明确提到辅助函数在模型中有效。

  

CodeIgniter不加载助手文件   默认情况下,这是使用的第一步   帮助者是加载它。一旦加载,   它在全球范围内可用   控制器观看次数

答案 2 :(得分:1)

Linux区分大小写,Windows没有。因此,如果您是在OS Windows中进行开发,那么在以Linux托管对象为例上传系统之前,您需要以小写的形式提供文件的名称。

例如:

Windows application / helpers / MY_functions_helpers.php
Linux application / helpers / my_functions_helpers.php

答案 3 :(得分:0)

mmm,我不确定它是否适用于助手,但你是否试图以这种方式加载助手?

$CI = & get_instance();

$CI->load->helper('string');

答案 4 :(得分:0)

我遇到了类似的情况。我的开发环境是WINDOWS,它运行良好,如DOCs中所述,即MY_string_helper.php

在UNIX的生产环境中,它给出了错误:

  

无法加载请求的文件:helpers / my_form_helper.php

将文件名更改为小写已解决此错误帮助程序未实际加载。

经过大量的时间浪费,通过点击和追踪它起作用[它没有记录]

在autoload.php中,只需在默认帮助程序之前提及扩展帮助程序:

$autoload['helper'] = array('my_string', 'string');

,前缀必须为大写,它不适用于小写前缀:

$config['subclass_prefix'] = 'MY_';

答案 5 :(得分:0)

您只需要使用您的前缀(如在application / config / config.php中找到的那样)更改辅助函数名称

重命名助手后,请确保它仅包含小写字母

然后使用您重命名的功能名称更改自动加载文件,

由于诸如主机服务器之类的操作系统而导致的主要问题是linux,并且您使用Windows进行开发,因此此问题出现了