2013-03-25 176 views
1

假设我有与类名控制器“谷歌”,它包含一些数据例如笨模板引擎

//应用/控制器/ google.php

$data = array(
    'target' => 'earth', 
    'percentage' => 70 
); 

及其视图文件是'google_view.php' //应用/视图/ google_view.php

以及与所述CALSS名“MSN第二CONTROLER“在这里,我想要得到的” 谷歌“控制器的数据..或者我只是想包括” google_view“文件,而没有经过$data变量再次

听说用setflash的..但问题是什么,如果用户访问msn页面没有访问谷歌

所以有什么办法可以得到谷歌控制器数据?

我也检查了opencart cms &其控制器中的MVC框架,我们可以调用下面的另一个控制器..在下面的代码中,我们可以调用头控制器。

$this->children = array(
    'common/column_left', 
    'common/column_right', 
    'common/content_top', 
    'common/content_bottom', 
    'common/footer', 
    'common/header' 
); 

回答

0

嗯...我不认为你这样做在CI,但我会建议一个想法......

扩展控制器核心类,那么就一定要扩大你的新类应用程序控制器的构造函数。例如。

class MY_Controller extends CI_Controller { 

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

     $this->default_data_google = array(
      'target' => 'earth', 
      'percentage' => 70 
     ); 
    } 

} 

class Google extends MY_Controller { 

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

    public function index() { 
     $data = $this->default_data_google; 
     $this->load->view('google_view', $data); 
    } 

} 

// 

..

class Msn extends MY_Controller { 

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

    public function index() { 
     $data = $this->default_data_google; 
     $this->load->view('google_view', $data); 
    } 

} 
+0

如果数据变量是动态的,该怎么办? – 2013-03-25 08:54:36

+0

好吧 - 你没有提到任何关于动态数据的问题 - 但是,你仍然可以从MY_conrroller中的数据库中获取数据。 – TigerTiger 2013-03-25 09:40:38

1

您正在寻找HMVC功能,这笨并没有真正做到。看看这个在CI:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc中实现它的库。网络上有很多资源可以更详细地解释HMVC和MVC。

如果你正在做任何规模的事情,CodeIgniter可能不是你的应用程序的最佳框架 - 值得看看其他几个。我在一分钟内使用了很多Laravel,如果你只是想获取另一个控制器的输出(例如在Laravel中,你只需要去​​),那么这将工作得很好。

希望有帮助!