Hex提供的HMVC好像有点问题
在使用过程中发现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,就不行,比如要在一个使用完后才能使用另外一个,不能交替。
不知上面的问题有啥好的解决方法没 首先,感谢你提出的问题。
1. 请提供出错的代码,我可以回去研究一下。
2. 这个也最好能提供个出错的代码段,谢谢。 请问Hex你做的HMVC是随便哪里都可以调用么? 是的,我做这个的目的就是要在视图的任意地方直接使用,我当初也试过嵌套的情况。
如果你那里出了问题,当然不排除是 BUG,希望你能提供代码,让我能分析一下,谢谢~~ 本帖最后由 coeus 于 2010-7-30 00:29 编辑
我在构造函数里我写了
$this->load->model('User_model', 'User');
然后在module里写了一个name的方法,并在里面里调用了User类的一个方法getUserName,并简单的echo用户名
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
视图文件里的是
$this->load->module('Message/show/') ;
show这个方法是直接显示的另外一个视图msg_tp
$this->load->view('msg_tp') ;
在msg_tp里的内容如下,便会出现错误:
$this->load->module('User/Profile/id') ;
$this->load->module('Message/uid/') ;
$this->load->module('User/Profile/name') ;
而这样的情况就不会出错
$this->load->module('User/Profile/id') ;
$this->load->module('User/Profile/name') ;
php $this->load->module('Message/uid/') ;
第一个问题,我怀疑你的构造函数有问题,因为构造函数的代码顺序不能错,你贴一下看看。
第二个问题,我回去测试一下。 本帖最后由 coeus 于 2010-7-30 01:24 编辑
第一个问题。。。我的构造函数就只有两行。
parent::__construct();
$this->load->model('User_model', 'User');
而且这个问题有时有,有时没的,同样一个model在另外的里面加载就没问题。
因为估计你写HMVC也是通过集成一些CI的原有的功能,不知道是不是CI的内部有点小BUG。
我知道有个顺序 谁先加载谁后加载的问题。
话说回来,一般model封装较为独立,在加载的时候很少遇见有重复,以及先后的情况吧。
HEX把这帖子挪个地方吧,我没注意就发错地儿了。 你的顺序没错,我回去测试一下吧,呵呵 好吧。我希望你能测试出问题。这话感觉有点怪。哈哈。 -_- 怎么怪了?
不过这几天可能没时间测试,呵呵~~