1

我的安装中有两个模块。两个模块的控制器都传递了一个名为

$data['content']

对他们的看法。此外,第一个模块的视图通过运行第二个模块

<?php echo Modules::run('module2'); ?>

之后应该显示其 $data['content'] 变量中的值。不幸的是,此时第一个模块的 $data 内容被第二个模块的 $data 替换。这对我来说很不方便,所以我想知道是否有一种方法可以“保护” $content 变量并将它们仅保留在其关联的模块中?

如果可能,我想避免重命名 $data['content'] 。我在使用中找到了一个不太完美的解决方案

$data(__CLASS__)

但我很好奇是否可以不更改 $data['content']。

4

1 回答 1

0
class Some extends MX_Controller{

    public function __construct(){parent::__construct();}

    public function index(){
        $this->load->view('template', array( //Primary template
            'content'    =>  'some_index' // index view
        ));
    }

    public function _module_1(){
      $this->load->view('module_1_view', array( //Module View : NO primary template
            ''    =>  '' <= no need to load view here, only data
        ));
    }

    public function _module_2(){
      $this->load->view('module_2_view', array( //Module View : NO primary template
            ''    =>  '' <= no need to load view here, only data
        ));
    }
}

-

模板.php

<html>
  <?php $this->load->view($content); ?>
</html>

-

some_index.php

<html>

//call modules
<?php echo Modules::run('some/_module_1'); ?>

<?php echo Modules::run('some/_module_2'); ?>

//call module from another class
<?php echo Modules::run('another_class/_module_1'); ?>

</html>
于 2012-06-08T01:42:35.857 回答