用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2156|回复: 1
收起左侧

[修补 Patch] VIEWS自带头信息,LAYOUT,使用HOOK

[复制链接]
发表于 2015-8-9 13:03:20 | 显示全部楼层 |阅读模式
本帖最后由 sszwei 于 2015-8-9 13:25 编辑

虽然以前玩过CI2.0,但那时候并未深入。
最近在做个项目,觉得CI3.0的VIEWS和KOHANA确实像,所以做了个小功能给需要的朋友

预先HOOK一个post_controller_constructor,以便调用header footer需要的参数
PHP复制代码
 
$this->CI->views_data = array();/*单页面全局变量,作用于VIEWS*/
 
复制代码

具体方法自行扩展

再使用post_controller,载入一个LAYOUT
PHP复制代码
 
        $views = array();
        $views['header'] = $this->Router->fetch_class() === 'admin' ? 'admin_header' : 'header';
        $views['content'] = _is_mobile() ? $this->Router->fetch_class().'/'.$this->Router->fetch_method().'_mobile' : $this->Router->fetch_class().'/'.$this->Router->fetch_method();
        $views['footer'] = $this->Router->fetch_class() === 'admin' ? 'admin_footer' : 'footer';
        foreach($views as $val) {
            $test_val = $this->Router->fetch_class().'/'.$this->Router->fetch_method().'-'.$val;
            /*舍弃固定头部/尾部,配置文件内*/
            if(in_array($test_val, $this->CI->config->item('website_outdisplay', 'xdd'))) {
                continue;
            }else{
                $val = _is_mobile() ? $val.'_mobile' : $val;
            }
            $this->CI->load->view($val, $this->CI->views_data);
        }
 
 
复制代码


毕竟不是非常大的项目 所以例外的header footer还是非常少的,各位也可以在这上面进行扩展改进,只是给个思路。

 楼主| 发表于 2015-8-9 13:06:55 | 显示全部楼层
额。。我不能编辑自己帖子?
$views还能扩展个左边栏
_is_mobile 线上很多成熟代码,直接区分移动端与PC端
主要为了多模板都共享一个data变量数组。。有好方法的各位请回帖
排除header footer主要使用配置文件,也可以使用全局DB config操作。。

本版积分规则