2017-01-10 17 views
0

さて、私はページコントローラーとuser_authenticatorコントローラーを持っています。 user_authenticatorコントローラiはログイン例えば言うuser_authenticatorに機能して終わりだ時はいつでも。codeigniter3コントローラーからコントローラーへの機能

の登録/伐採のようなユーザーに関連する機能を実行しながら、

ページコントローラは、私の意見に、端末のようなものですどのように私はページコントローラ経由でビューをロードするのですか? (コントローラ) - > acc_model(モデル) - > user_auth(コントローラ) - >表示を選択します。 >ビュー -

Login-> user_auth-> acc_model->ページ(コントローラ)へ

もし私がやっていることが実用的でなく、より良いやり方をしていると教えてくれれば、私にとっては恩恵があります。または、私は以前使用していたコントローラーのビューをロードするだけでよいでしょう。

編集:私のページコントローラの目的を忘れているかもしれませんが、私は霧と疲れた心の明瞭さのために思い出しました。

私はビューを読み込むためだけにページコントローラを作っていましたが、ある意味では、ページはすべてのビューを読み込むわけではありません。ほとんどのビューは、例えば、それらをページを介してリンクします。

特定のコントローラが必要な特定の機能については、いくつかのビューの読み込みを処理させることができます。

誰かが私に何をしているのかを教えてもらえれば、時間の無駄です。ページコントローラを削除してください。私に教えてください。理由を知りたいのですが。

また、私のページコントローラの使い方を教えてください。

セッションに関しても。私はベースコントローラーを持っています。

<?php 
class MY_Controller extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function is_logged_in($data){  
     $session = $this->session->userdata(); 
     if($session['isloggedin']['username'] == ''){ 
     return isset($session); 
     }else{ 
     return FALSE;} 
    } 
} 
?> 

セッションセットがあれば自動的に実行され、すべてのコントローラがロードされるように確認するにはどうすればよいですか?

私はそれをコンストラクタに配置する必要がありますか?またはすべてのコントローラからベースコントローラメソッドを呼び出す必要がありますか?

答えて

0

ここでは最適なソリューションです。
あなたはフック
ステップ1使用することができます。
アプリケーション/設定/ config.phpの

$config['enable_hooks'] = TRUE;//enable hook 

ステップ2:
アプリケーション/設定/ hooks.php

$is_logged_in= array(); 
    $is_logged_in['class'] = ''; 
    $is_logged_in['function'] = 'is_logged_in';//which function will be executed 
    $is_logged_in['filename'] = 'is_logged_in.php';//hook file name 
    $is_logged_in['filepath'] = 'hooks';//path.. default 
    $is_logged_in['params'] = array(); 
    $hook['post_controller_constructor'][] = $is_logged_in;//here we decare a hook . 
    //the hook will be executed after CI_Controller construct. 
    //(also u can execute it at other time , see the CI document) 

ステップ3: アプリケーション/フックを/is_logged_in.php //何がデコされたか

<?php 
    //this function will be called after CI controller construct! 
    function is_logged_in(){ 
     $ci =& get_instance();//here we get the CI super object  
     $session = $ci->session->userdata();//get session 
     if($session['isloggedin']){ //if is logged in = true 
      $ci->username = 'mike';//do what you want just like in controller. 
      //but use $ci instead of $this** 
     }else{ 
      //if not loggedin .do anything you want 
      redirect('login');//go to login page. 
     } 
    } 

ステップ4:アプリケーション/コントローラ/ページ。PHP

<?php 
    class pages extends CI_Controller{ 
     function construct ........ 
     function index(){ 
      echo $this->username;//it will output 'Mike', what u declared in hook 
     } 
    } 

希望するとうれしいです。

+0

私が探していた答えは正確ではありませんが、もう一度、私は既にMY_Controllerに拡張を使用し、コンストラクタを使用して問題を解決しました。 – john

関連する問題