coeus 发表于 2010-7-29 23:30:14

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,就不行,比如要在一个使用完后才能使用另外一个,不能交替。

不知上面的问题有啥好的解决方法没

Hex 发表于 2010-7-29 23:33:04

首先,感谢你提出的问题。
1. 请提供出错的代码,我可以回去研究一下。
2. 这个也最好能提供个出错的代码段,谢谢。

coeus 发表于 2010-7-29 23:56:40

请问Hex你做的HMVC是随便哪里都可以调用么?

Hex 发表于 2010-7-30 00:01:46

是的,我做这个的目的就是要在视图的任意地方直接使用,我当初也试过嵌套的情况。
如果你那里出了问题,当然不排除是 BUG,希望你能提供代码,让我能分析一下,谢谢~~

coeus 发表于 2010-7-30 00:21:30

本帖最后由 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/') ;

Hex 发表于 2010-7-30 01:04:16

第一个问题,我怀疑你的构造函数有问题,因为构造函数的代码顺序不能错,你贴一下看看。
第二个问题,我回去测试一下。

coeus 发表于 2010-7-30 01:22:37

本帖最后由 coeus 于 2010-7-30 01:24 编辑

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

parent::__construct();
$this->load->model('User_model', 'User');

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

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

话说回来,一般model封装较为独立,在加载的时候很少遇见有重复,以及先后的情况吧。
HEX把这帖子挪个地方吧,我没注意就发错地儿了。

Hex 发表于 2010-7-30 01:31:14

你的顺序没错,我回去测试一下吧,呵呵

coeus 发表于 2010-7-30 01:39:44

好吧。我希望你能测试出问题。这话感觉有点怪。哈哈。

Hex 发表于 2010-7-30 09:49:10

-_- 怎么怪了?
不过这几天可能没时间测试,呵呵~~
页: [1] 2 3
查看完整版本: Hex提供的HMVC好像有点问题