覆盖CI_Controller

时间:2012-12-19 07:24:26

标签: codeigniter

我已经覆盖了我的CI_Controller,因此我可以针对每个控制器进行特定的用户检查,例如,每个人都可以访问Guest_Controller,User_Controller仅适用于已登录的用户。

这一切都运行正常,但我只是覆盖了输出

class Guest_Controller extends CI_Controller
{  
    public function __construct() 
    {
        parent::__construct();
    }

    public function _output($content)
    {
        // Load the base template with output content available as $content
        $data['content'] = &$content;       
        echo($this->load->view('templates/html_guest', $data, true));
    }
}

class Homepage extends Guest_Controller {
    public function __contruct()
    {
    }

    public function index()
    {
        $data = array(
            'title' => 'Homagepage',
            'page_title' => 'Homepage',
            'body_classes' => 'home'
        );
        $this->parser->parse('homepage', $data);
    }
}

在我的$data中你可以看到我有body_classes,我使用这个,所以我可以根据自己的需要为每个页面提供一个单独的课程。 现在,在body_classes中添加默认Guest_Controller的最佳方式是什么?

如果body_class主页,我该如何为其添加一些默认值?

编辑:所以我正在寻找一种方法来轻松添加身体类,同时还有一些默认值。

1 个答案:

答案 0 :(得分:1)

class Guest_Controller extends CI_Controller
{  
    public function __construct() 
    {
        parent::__construct();
    }

    public function _output($content)
    {
        // Load the base template with output content available as $content
        $data['content'] = &$content;       
        echo($this->load->view('templates/html_guest', $data, true));
    }

    //specify default values with $page_info
    protected function get_page_info($page_info)
    {
         $data = array(
            'title' => 'default',
            'page_title' => 'default',
            'body_classes' => 'default'
         );

         foreach ($page_info as $key => $value) 
             $data[$key] = $value;    

         return $data;        
    } 

}

class Homepage extends Guest_Controller {
    public function __contruct()
    {
    }

    public function index()
    {
        $data = array(
            'title' => 'Homagepage',
            'page_title' => 'Homepage',
        );
        $this->parser->parse('homepage', $this->get_page_info($data));
    }
}