我正在为 codeigniter 使用 HMVC 模块扩展。阅读这篇精彩的文章 - CodeIgniter 的可扩展登录系统 – Ion_Auth。本文建议我们可以创建多个自定义控制器,并根据登录用户的角色,将用户重定向到他各自的控制器。例如,对于 Admin,将他重定向到扩展 Admin_Controller 的控制器等等:
class Admin_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
if( ! $this->ion_auth->is_admin()) {
redirect('/');
}
}
}
因此,我们可以在基本控制器级别本身为该控制器中的所有方法/视图应用通用规则。这就是我要查询的地方:如果我不想对该控制器中的所有视图进行全局控制怎么办。
或者换句话说 - 如果我需要对单个视图进行特定控制,如何去做。例如 - 我有一个名为“Blog”的控制器和名为“view”、“add”、“edit”的方法。现在,视图适用于所有类型的用户,而只有管理员才能添加或编辑博客。这意味着我不能放置控制器级别的逻辑..
class Blog_Controller extends Admin_Controller {
// should be accessible to both Admin and non-logged in user
public function view() {..}
// Following are only accessible to Admin
public function edit() {..}
public function create() {...}
}
我能想到的一种方法是在多个控制器中复制代码并处理特定于用户角色的视图。