我不想在每个控制器中定义和存储用户,然后将其传递给视图。 这是我的控制者:
登录控制器:
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);
}
答案 0 :(得分:3)
您只需在视图中拨打$this->session->userdata('username')
即可。
它存储在会话中,因此您不必将其传递给控制器的视图。
更新评论;
如果你想根据基本控制器(例如用户)加载视图,我会使用template library并设置模板以在基本控制器的构造中使用。
例如(使用此template library);
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');
}
}