用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3453|回复: 5
收起左侧

[已解决] Model可以调用helper中函数吗

[复制链接]
发表于 2013-2-23 20:06:53 | 显示全部楼层 |阅读模式
本帖最后由 mark35 于 2013-3-5 18:35 编辑

要根据不同的控制器方法对结果集进行不同的处理,在Model中回调执行预先设置的回调函数名,想把这个回调函数名的代码放在helper中。但看手册没说model可以调用helper中函数
CodeIgniter 默认是没有载入辅助函数文件的,所以如果你想用辅助函数,就必须先载入它。一旦被载入,辅助函数将全局可用(globally available),你可以在 controllerviews 中使用它们。

如果不行,那好像只有放到类库中,然后在Model  的方法中回调类库中定义的方法了

发表于 2013-2-24 00:35:09 | 显示全部楼层
可以的,如果不行可以参看下一个CI的权限模块。

http://github.com/benedmunds/CodeIgniter-Ion-Auth
发表于 2013-2-24 06:51:19 | 显示全部楼层
英文原文没写好。

控制器中的$this,与模型中的$this不是同一件事,而view本身不是object,在view中使用的$this就是控制器。

library中的$this亦与控制器及模型有别。原文亦无提到library。


载入helper,是把函数的定义载入PHP。载入后,无论是Controller,model,view,library,甚至是其它helper都能使用这些函数。

可注意到在手册中没提及model,library及其它helper都可以使用helper。这可能是考虑到,若$this不是控制器,载入helper的方法可能会不一样。


但熟悉PHP的都知道,若函数定义已载入PHP,无论在传统模式,或是object模式,都能直接调用该函数。
 楼主| 发表于 2013-2-24 13:24:05 | 显示全部楼层
niudongwei 发表于 2013-2-24 00:35
可以的,如果不行可以参看下一个CI的权限模块。

http://github.com/benedmunds/CodeIgniter-Ion-Auth ...

多谢,我就是用这个类库的
 楼主| 发表于 2013-2-24 13:27:55 | 显示全部楼层
燃雲 发表于 2013-2-24 06:51
英文原文没写好。

控制器中的$this,与模型中的$this不是同一件事,而view本身不是object,在view中使用的 ...

是的,我是想helper是函数定义,在controler中载入后就应该可以在任何地方调用——因为辅助函数调用是函数名直接调用,而不是$this->fn对象的方式来调用
多谢
 楼主| 发表于 2013-2-25 10:05:18 | 显示全部楼层
本帖最后由 mark35 于 2013-2-25 21:18 编辑
niudongwei 发表于 2013-2-24 00:35
可以的,如果不行可以参看下一个CI的权限模块。

http://github.com/benedmunds/CodeIgniter-Ion-Auth ...

ion_auth是在类库中加载model:
                        $this->load->model('ion_auth_model');
然后在控制器中使用ion_auth而不是ion_auth_model去调用方法,不知道为何这样,方便管理么
  1.                         //list the users
  2.                         $this->data['users'] = $this->ion_auth->users()->result();
复制代码
这是ion_auth官网的说明
NOTE: Methods available in the model are called through the controller using PHP5 magic. You should never use ion_auth_model->method() in your applications.

本版积分规则