0

Codeigniter アプリケーションに HMVC モジュラー分離を使用しており、セットアップしたテンプレートでこれを試みる方法を見つけようとしています。これを処理するためのより良い方法がある可能性があり、私にはわかりませんが、誰かがそれを提案できるなら、私はすべての耳になります. これが私の現在のファイルシステムです。以下のaaフォルダーとして示されている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

ここでは、ビューのボディ コンテンツに使用できる 1 つの方法を示します。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 に答える