2

におけるCIセッション...この答えのようなもの: Codeigniter languageアクセス前のコントローラCodeIgniterのフック

私はまた、有名なTank Authライブラリを使用してユーザーを管理しています。ログイン時にユーザーセッションを保存および管理するためにcodeigniter Sessionクラスを使用しています。各ユーザーは、必要なインターフェイス言語を指定し、将来のログイン用にデータベースに格納できます。 langの情報は、ログインごとにDBからセッションにコピーされます。

問題は次のとおりです。ユーザセッションをフックの内部からチェックすることができません。彼のセッションにlang情報があるかどうかはどうすれば知ることができますか(ログインしたユーザーの場合)?

ログインしたユーザーセッションを処理する場合、フックアプローチが最良のものかどうかはわかりません。私がより良いアプローチを取ることができれば教えてください。事前に

おかげ

答えて

3

I代わりpre_controllerpost_controller_constructorフックを使用してこれを解決しました。そのフックでは、セッションにアクセスできます。だから、私はCIセッションで検出されたlangを設定しており、それに応じて言語ファイルをロードしています。

これが最善のアプローチかどうかはわかりませんが、コントローラコンストラクタでlangライブラリを使用していない場合は問題ありません。

+1

私は同じ問題がありました。 post_controller_constructorを使用しようとしましたが、問題が発生しました。なぜなら、post_controller_constructorの前にロードする必要がある言語ファイルを自動ロードしていたからです。私が修正したのは、 "post_controller_constructor"フックを使用してCIの言語を設定した場合、自動ロードされた言語ファイルはその言語に変更されません。以前にロードされているためです。 –

+0

あなたのフック。トーマスの修正は完璧です。 – woheras

-1

一つの可能​​な解決策は、あなたの前のコントローラフックからCIインスタンスでセッションライブラリをロードしようとすることです。

$CI = &get_instance(); 
$CI->load->library('session'); 
// --- Then --- 
$var = $CI->session->userdata('$the_variable_youre_checking'); 
+2

get_instance()関数はプリコントローラフックでは機能しません。まだCIにはロードされていません – Nedal

2

は、post_controller_constructorホックを使用します。これは、コントローラコンストラクタの後でコントローラメソッドの前に呼び出されます。それはあなたのためのトリックを行う必要があります。私のために

関連する問題