0

可能重复:
从会话代码点火器的视图中回显用户

我不想在每个控制器中定义和存储用户,然后将其传递给视图。这是我的控制器:

登录控制器:

class LoginController extends CI_Controller {
    function index(){       
        $new['main_content'] = 'loginView';
        $this->load->view('loginTemplate/template', $new);          
    }

    function verifyUser(){

    //getting parameters from view 
    $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password')
    );      

    $this->load->model('loginModel'); 
    $query = $this->loginModel->validate($data);

    if ($query){             
        //if the user c validated data variable is created becx we want to put username in session

            $data = array(
                'username' => $this->input->post('username'),
                 'is_logged_in' => true 
            );

           $this->session->set_userdata($data);
           redirect('sessionController/dashboard_area');
    }else{
        $this->index();
    }
}
function logout()
{
    $this->session->sess_destroy();
    $this->index();
}
}



?>

我的控制器,我存储在核心文件夹中,所以现在每个控制器都扩展了这个控制器。我认为这个控制器可以自定义,所以我可以在扩展这个控制器的每个视图页面中访问用户:

   class MY_Controller extends CI_Controller{
        function __construct(){
    parent::__construct();
    $this->is_logged_in();

    }   
    function dashboard_area(){
    $data['main_content'] = 'dashboardView';
    $this->load->view('dashboardTemplate/template', $data);         
    }

function is_logged_in()
{
    $is_logged_in = $this->session->userdata('is_logged_in');

    if(!isset($is_logged_in) || $is_logged_in != true)
    {
        echo 'You don\'t have permission to access this page.';
        redirect('loginController');
    }
}


           }
?>

这是我简单的一个成员控制器,它扩展了上述控制器:在索引函数中,我存储用户名,然后传递到我不想做的视图中:

     class CategoryController extends MY_Controller {
   function index(){         
    $data['main_content'] = 'categoryView';         
    $username= $this->session->userdata('username');
    $data['username']=$username;
    $this->load->view('dashboardTemplate/template',$data);
      }
4

1 回答 1

3

你可以$this->session->userdata('username')在你的视图中调用。

它存储在会话中,因此您不必将其从控制器传递给视图。

更新每条评论;
如果您想根据基本控制器(例如用户)加载视图,我将使用模板库并将模板设置为在基本控制器的构造中使用。

例如(使用这个模板库);

class MY_User extends CI_Controller {
   public __construct() {
      parent::__construct();
      $this->is_logged_in();
      $this->template->set_template('user');
   }
}

class MY_Admin extends CI_Controller {
   public __construct() {
      parent::__construct();
      $this->is_logged_in();
      $this->template->set_template('admin');
   }
}
于 2013-01-15T13:08:18.453 回答