模块化分离

时间:2013-01-26 22:38:05

标签: php codeigniter module hmvc

我正在为我的Codeigniter应用程序使用HMVC模块化分离,并尝试弄清楚如何使用我设置的模板尝试这一点。有可能有一个更好的方法来处理这个,我不确定它,但如果有人可以提出一个我会全部听到。这是我当前的文件系统。 Supr如下面的文件夹所示是我正在使用的当前主题模板。

在每个模块控制器内部都存在一个名为$ view_file的变量。这是传递给正文内容视图页面的变量,并告诉它在我的控制面板中的内容包装器中显示哪个视图文件。

我需要弄清楚的是如何将file_exists函数添加到if语句,以便它查看变量的值是否可以查看该文件是否存在但不确定如何使用此HMVC模块完成此操作分离框架。我需要帮助理解如何执行此操作的原因是因为我不知道如何让它知道要查看哪个模块视图。

我还包含了我的正文内容视图代码,其中包含一个if语句,用于找出需要加载的文件。

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

application/
    modules/
        blog/
            controllers/
                blog.php
            models/
                blog_model.php
            views/
                blog_view.php
        dashboard/
            controllers/
                dashboard.php
            models/
                dashboard_model.php
            views/
                dashboard_view.php
    views/
        supr/
            cpanel/
                header.php
                footer.php
                body_content.php

<!--Body content-->
<div id="content" class="clearfix">
    <div class="contentwrapper"><!--Content wrapper-->

    <?php 

    if ((empty($view_file)) || (!isset($view_file)) || (trim($view_file) == '')) //add file exists to if statement for module view file being requested
    {
        $this->load->view('supr/body_unknown_view');
    }
    else
    {
        $this->load->view('supr/cpanel/pages/' . $view_file);  // Change to module speration view file 
    }

    ?>
</div><!-- End contentwrapper -->
</div><!-- End #content -->

1 个答案:

答案 0 :(得分:2)

这里有一种方法可以用于视图的主体内容,利用OOP扩展控制器,使用MY_Controller在应用程序核心下创建MY_Controller类。

class MY_Controller extends MX_Controller { 
     // not using Modular extentions then extend with CI_Controller

    function __construct(){
          parent::__construct;
    }

    function build($view=null,$data=array()){

          $load_view = 'supr/body_unknown_view';

          if(strlen($view))
          {
               $load_view = 'supr/cpanel/pages/' . $view;
          }

        $body = $this->load->view($load_view,$data,TRUE);

        $this->load->view('supr/cpanel/body_content',array('body'=>$body));

    }

}

//blog controller
class blog extends MY_Controller { 


        function __construct(){
              parent::__construct;
        }

        function index(){
           //anydata
           $data['blog_content'] = 'blog content';
           $this->build('blog_view',$data);
        }

    }

<!--Body content-->
<div id="content" class="clearfix">
    <div class="contentwrapper"><!--Content wrapper-->

    <?php echo $body; ?>

</div><!-- End contentwrapper -->
</div><!-- End #content -->