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

[Others] Hex提供的HMVC好像有点问题

  [复制链接]
发表于 2010-7-29 23:30:14 | 显示全部楼层 |阅读模式
在使用过程中发现2个问题:
1 在使用用Module,有时会出现错误,提示不能加载model没有加载成果,不管是在module文件夹下还是去application里找都没结果。准确的来说,错误提示是Fatal error: Call to undefined method Users_module::add() 这之类的。
2 模块在调用的时候似乎有个模块话像html的标签一样。例如在一个结构中是module_1->method, module_2->method,module_1->method,就不行,比如要在一个使用完后才能使用另外一个,不能交替。

不知上面的问题有啥好的解决方法没
发表于 2010-7-29 23:33:04 | 显示全部楼层
首先,感谢你提出的问题。
1. 请提供出错的代码,我可以回去研究一下。
2. 这个也最好能提供个出错的代码段,谢谢。
 楼主| 发表于 2010-7-29 23:56:40 | 显示全部楼层
请问Hex你做的HMVC是随便哪里都可以调用么?
发表于 2010-7-30 00:01:46 | 显示全部楼层
是的,我做这个的目的就是要在视图的任意地方直接使用,我当初也试过嵌套的情况。
如果你那里出了问题,当然不排除是 BUG,希望你能提供代码,让我能分析一下,谢谢~~
 楼主| 发表于 2010-7-30 00:21:30 | 显示全部楼层
本帖最后由 coeus 于 2010-7-30 00:29 编辑

我在构造函数里我写了
PHP复制代码
 
$this->load->model('User_model', 'User');
 
复制代码


然后在module里写了一个name的方法,并在里面里调用了User类的一个方法getUserName,并简单的echo用户名
PHP复制代码
public function name($uid){
        return $this->User->getUserName($uid);
}
复制代码



然后就出现以下的错误了

Fatal error: Call to a member function getUserName() on a non-object in \Users\controllers\Profile.php on line 22
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Users_Profile_module:User
Filename: controllers/Profile.php
Line Number: 22



关于第2个问题是这样的,简单的给你描述下:
在一个视图里调用了一个 module_msg 。
而这个module_msg调用了一个显示msg的模板msg_tp,而模板里的内容又包含2个module,其中一个module_user,一个是module_msg。使用的方式只能是在module_user使用完以后再使用module_msg。否则就会显示错误:

An Error Was Encountered
Unable to load the requested file: msg_tp.php


视图文件里的是
PHP复制代码
$this->load->module('Message/show/') ;
复制代码


show这个方法是直接显示的另外一个视图msg_tp
PHP复制代码
$this->load->view('msg_tp') ;
复制代码

在msg_tp里的内容如下,便会出现错误:

PHP复制代码
[color=Red]
$this->load->module('User/Profile/id') ;
$this->load->module('Message/uid/') ;
$this->load->module('User/Profile/name') ;
[/color]
复制代码

而这样的情况就不会出错

PHP复制代码
 
$this->load->module('User/Profile/id') ;
$this->load->module('User/Profile/name') ;
php $this->load->module('Message/uid/') ;
 
复制代码
发表于 2010-7-30 01:04:16 | 显示全部楼层
第一个问题,我怀疑你的构造函数有问题,因为构造函数的代码顺序不能错,你贴一下看看。
第二个问题,我回去测试一下。
 楼主| 发表于 2010-7-30 01:22:37 | 显示全部楼层
本帖最后由 coeus 于 2010-7-30 01:24 编辑

第一个问题。。。我的构造函数就只有两行。

PHP复制代码
parent::__construct();
$this->load->model('User_model', 'User');
复制代码


而且这个问题有时有,有时没的,同样一个model在另外的里面加载就没问题。
因为估计你写HMVC也是通过集成一些CI的原有的功能,不知道是不是CI的内部有点小BUG。

我知道有个顺序 谁先加载谁后加载的问题。

话说回来,一般model封装较为独立,在加载的时候很少遇见有重复,以及先后的情况吧。
HEX把这帖子挪个地方吧,我没注意就发错地儿了。
发表于 2010-7-30 01:31:14 | 显示全部楼层
你的顺序没错,我回去测试一下吧,呵呵
 楼主| 发表于 2010-7-30 01:39:44 | 显示全部楼层
好吧。我希望你能测试出问题。这话感觉有点怪。哈哈。
发表于 2010-7-30 09:49:10 | 显示全部楼层
-_- 怎么怪了?
不过这几天可能没时间测试,呵呵~~

本版积分规则