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

HMVC Hex 发布版本的使用总结

  [复制链接]
发表于 2012-3-9 11:52:19 | 显示全部楼层 |阅读模式
本帖最后由 lynn.wang 于 2012-3-9 11:54 编辑

1.先搭建好干净的 CodeIgnter 环境  (避免受其他设置等影响浪费大量时间)

2.将 CodeIgnter-HMVC 文件夹中
   ( 下载地址 https://github.com/CodeIgniter/HMVC

        application\core\Module.php
        application\core\MY_Loader.php
        application\core\MY_Router.php
        
        application\third_party\module_proxy.php
        
        4个文件拷贝到 CodeIgnter application 对应的目录下
        (这个就是实现 HMVC 的代码,放进去即可,也可以学习下哈)

3.在 CodeIgnter application 下建一个 modules 文件夹  (剩下的就是 创建模块 和 使用模块)

4.下面将开始使用 Hex 提供的 HMVC, 举个小例子
        假设我们要在视图 welcome_message.php 中加载一个模块 test

        setup1: 在 modules 下建一个 test 文件夹
        setup2: 在 test 下分别建立 controllers , models , views 这3个文件夹
        setup3: 先创建好test模块
                     A.在controllers中创建 example.php
PHP复制代码
 
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
/**
        类名语法: 模块名_文件名_module (注意模块名,文件名首字母要大写)
        并继承的 Hex 写的 CI_Module
 */

 
class Test_Example_module extends CI_Module {
        public function index()
        {
                // 这是装载本模块的模型,如果在本模块下找不到,则自动装载全局模型
                $this->load->model('M_example_model');
                $this->M_example_model->start();
                $this->load->view('view_test');
        }
}
 
复制代码


                                       
                     B.在models中创建 M_example_model.php
PHP复制代码
 
<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
 
/**
        类名语法: 模块名_文件名 (注意模块名,文件名首字母要大写)
        并继承的 Hex 写的 CI_Module
 */

 
class Test_M_example_model extends CI_Model {
        function start()
        {
                echo '<p>Test_M_example_model</p>';
        }
}
 
复制代码
               
                                                
                     C.在views中创建 view_test.php
PHP复制代码
 
<?php
        echo "This is the test module's view!";
?>
 
复制代码


        setup4: 先在视图 welcome_message.php 中合适的位置添加所要加载的模块的代码
                                        例如: 在body的最后面添加
                                                                <?php $this->load->module('test\example'); ?>
                                                                也就是由 模块路径\控制器 组成的
                                        此时就会加载 test 模块,并调用 example 控制器
                                       
                                        此时访问 localhost 可以看到原来的 welcome_message 界面会新增展示
                                       
                                        Test_M_example_model
                                        This is the test module's view!aaa                                       
                                       
        使用方法基本如上,如果需要在 modules 和 module 之间添加一个目录的话
        对应类名的语法前面加 目录_上述类名语法
        调用的时候也是在前面加上目录名即可

如果有写的不好的地方,欢迎指出修改,谢谢!
        
        


评分

参与人数 1威望 +5 收起 理由
Hex + 5 很给力!

查看全部评分

发表于 2012-3-9 13:12:20 | 显示全部楼层
先占个沙发再慢慢试  {:soso_e113:}
 楼主| 发表于 2012-3-9 13:18:25 | 显示全部楼层
自然 发表于 2012-3-9 13:12
先占个沙发再慢慢试

嘻嘻  我自己也试了很多次的!
应该好用!个人感觉哈!
发表于 2012-3-10 07:54:55 | 显示全部楼层
8错的分享,顶下
发表于 2012-3-14 10:27:27 | 显示全部楼层
A.在controllers中创建 example.php
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
        类名语法: 模块名_文件名_module (注意模块名,文件名首字母要大写)
        并继承的 Hex 写的 CI_Module
*/

class Test_Example_module extends CI_Module {

这里为什么是 module?  
 楼主| 发表于 2012-3-14 14:44:55 | 显示全部楼层
application\core 下有 hex 写好的 module
你可以去看看哦!
仔细看哦
别把 model  和 module 看错了哦!!
发表于 2012-3-18 17:51:04 | 显示全部楼层
remark下
发表于 2012-3-19 10:50:14 | 显示全部楼层
iserich 发表于 2012-3-14 10:27
A.在controllers中创建 example.php
PHP

因为是我规定的。。。。没有理由,哈哈
 楼主| 发表于 2012-3-19 13:59:05 | 显示全部楼层
Hex 发表于 2012-3-19 10:50
因为是我规定的。。。。没有理由,哈哈

强大的Hex
发表于 2012-3-19 14:56:24 | 显示全部楼层
一直都在用老大的HMVC,谢谢分享

本版积分规则