由于在YII中用render来渲染页面很好用,在接触到ci后发现没有页面渲染和layout布局 然后就自己写了个用于渲染和布局的方法
没有布局太蛋疼,使用布局可以大大提高效率,如果每个文件都手工添加有太浪费时间和效率,回顾以前的项目记得曾经做过Yii的layout的设置,然后就搬到了CI上,具体见下面
首先定义全局的Controller,在项目的applcation/core目录下定义自己的Controller,不过要使用MY_开头也就是必须命名为:MY_Controller当然也可以自己 MY_ 是按照自己在配置里面设置的
在config.php中修改 $config['subclass_prefix'] = 'MY_'; 的内容为自己项目名称,网上也有很多把layout单独开发作为类库加载的,就是单独做了
Library下的文件Layout.php 不过需要在autoload中指定自动加载,可以根据自己爱好选择。。这里只介绍自定义全局控制器方法实现.
load->view($file, $viewData, TRUE); $data['layout'] = $layoutData; $this->load->view($this->layout, $data); } else { $this->load->view($this->layout, $viewData); } $viewData = array(); } }
其中css_files和js_files用来渲染js和css文件,这里还没有实现后续需要会逐步完善。
二、在layouts下建立 main_layout.php文件,内容如下
三、使用
在自定义controller中继承自MY_Controller,添加比如下面测试代码:
public function layout(){ $data= array('user_name'=>'张三','password'=>'密码'); $this->render('test',$data,array('title'=>'测试布局')); }
这样视图会首先渲染test中的数据,然后把数据作为内容传递给父视图中。test.php代码如下