我正在为我的Codeigniter应用程序使用HMVC模块分离,并试图弄清楚如何使用我设置的模板来实现这一点。可能有更好的方法来处理这件事,我不确定,但如果有人能提出一个建议,我会洗耳恭听。这是我当前的文件系统。Supr,正如下面提到的一个文件夹,是我当前使用的主题模板。
在每个模块控制器中都有一个名为$view_file的变量。这是传递给body content视图页面的变量,它告诉它在控制面板的内容包装器中显示哪个视图文件。
我需要弄清楚的是,如何在if语句中添加一个file_exists函数,以便查看变量的值是否可以查看该文件是否存在,但不确定如何使用这个HMVC模块分离框架来实现这一点。我之所以需要帮助理解如何做到这一点,是因为我不知道如何让它知道要查看哪个模块视图。
我还包含了body content视图的代码,该视图包含一条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 -->发布于 2013-01-27 13:44:58
这里有一种方法可以用于视图的主体内容,利用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 -->https://stackoverflow.com/questions/14542305
复制相似问题