这是在Codeigniter中为我的应用程序分离admin和public的好方法吗?

时间:2012-08-06 05:19:11

标签: codeigniter

我正在创建一个包含静态页面和管理员可编辑新闻和内容的网站。我想分开管理员和公众意见。这是分离视图的好方法还是你可以建议的更好的方法。我想要基本相同的视图,但只有管理员将有一个基于表单的文本区域来更改主题的内容。

MY_Controller.php:

class MY_Controller extends CI_Controller {

  protected $data = array();

  function __construct() {
    parent::__construct();
  }
    class Admin_Controller extends MY_Controller {

    function __construct()
    {
        parent::__construct();
        // Check login, load back end dependencies
    }
    function render_page($view) {
    if( ! $this->input->is_ajax_request() )
    {
      $this->load->view('templates/header', $this->data);
    }
    $this->load->view($view, $this->data);

    if( ! $this->input->is_ajax_request() )
    {
     $this->load->view('templates/menu');
     $this->load->view('templates/footer', $this->data);
    }
  }  
}
class Public_Controller extends MY_Controller {

    function __construct()
    {
        parent::__construct();
        // Check login, load back end dependencies
    }


   function render_page($view) {
    if( ! $this->input->is_ajax_request() )
    {
      $this->load->view('templates/header', $this->data);
    }
    $this->load->view($view, $this->data);

    if( ! $this->input->is_ajax_request() )
    {
     $this->load->view('templates/menu');
     $this->load->view('templates/footer', $this->data);
    }
  }  
}
}

1 个答案:

答案 0 :(得分:1)

如果管理视图在页面中是通用的,您可以将其作为视图加载到页面上的适当位置,例如

if($is_admin){
$this->load->view('admin_toolbar');
}else{
$this->load->view('generic_toolbar');
}

或者,如果管理员视图在页面中不常见,则可以在发送到页面的数据中包含一个标记。

(在控制器中)

$this->data['is_admin'] = true;

(视野内)

if($is_admin):
//output admin related html here.
endif