0

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

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

我需要弄清楚的是如何在 if 语句中添加 file_exists 函数,以便它查看变量的值是否可以查看该文件是否存在,但不确定如何使用此 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 -->
4

1 回答 1

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 -->
于 2013-01-27T05:44:57.813 回答