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');
    }
}


           }
?>

上記のコントローラーを拡張した単純な 1 つのメンバー コントローラーを次に示します。ここでは、インデックス関数で、ユーザー名を格納してから、やりたくないビューに渡します。

     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 に答える