Hex 发表于 2010-6-20 18:05:31

helper 顾名思义是辅助的函数,不建议在 helper 里做应用流程控制,这个应该是控制器的职责。
建议楼主深入理解一下 MVC 各部分的职责。

saturn 发表于 2010-6-22 08:45:53

回复 1# suruibuas


1. 权限验证属于程序上下文逻辑,不应该写在View里面,按照CI的MVC结构应该写在Controller里面。为了尽可能的DRY(Don't Repeat Yourself),以减少重复代码,推荐你拓展CI默认的Controller类,比如MY_Controller,将验证逻辑写在构造函数中,然后在用到该验证的控制器中继承这个Controller即可。实际的例子,请看我写的Stblog程序(签名中有下载链接)。

./application/libraries/MY_Controller.php

/**
* STBLOG 后台父控制器
*
* 后台的所有控制器都需要继承这个类,主要包含验证
*
* @package                STBLOG
* @subpackage        Controller
* @category        Controller
* @author                Saturn <huyanggang@gmail.com>
* @link                 http://code.google.com/p/stblog/
*/
class ST_Auth_Controller extends Controller {


    protected function __construct() {
      
                parent::Controller();
               
                /** 加载验证库 */
                $this->load->library('auth');
               
                /** 检查登陆 */               
                if(!$this->auth->hasLogin())
                {
                        redirect('admin/login?ref='.urlencode($this->uri->uri_string()));
                }
               
                /** 加载后台控制器公共库 */
                   $this->load->library('form_validation');
                   $this->load->library('user');

                /** 加载后台控制器公共模型 */
                $this->load->model('users_mdl');
               
                /** 加载后台控制器helper */
               
               
          /** 后台管理页面,不使用皮肤 */
          $this->load->switch_theme_off();
    }
}


具体要用到这个验证规则的类:


/**
* STBLOG Themes Class
*
* 本类用于Themes管理逻辑
*
* @package                STBLOG
* @subpackage        Controller
* @category        Admin Controller
* @author                Saturn <huyanggang@gmail.com>
* @link                 http://code.google.com/p/stblog/
*/
class Themes extends ST_Auth_Controller {
       
        /**
   * 传递到对应视图的数据
   *
   * @access private
   * @var array
   */
        private $_data = array();


2. 你说的第二个问题,通过autoload.php和方法一都可以完美解决。仔细考虑下,解决之后,希望你能够回过头来对大家分享下你的方案。

Cheers!
页: 1 [2]
查看完整版本: CI新手请教关于重复调用的问题。