リクエストがクライアントに送信された後に作業したいコードがいくつかありますので、コントローラ内からpost_system
フックをシステムに追加したいので、 post_system
フックは、特定のメソッドが呼び出されたときにのみ実行されます。CodeIgniterのコントローラメソッドの内側からpost_systemフックを追加する
CodeIgniter
これをいくつかの回避策で使用できますか?
私のバージョンは3.0rc3
リクエストがクライアントに送信された後に作業したいコードがいくつかありますので、コントローラ内からpost_system
フックをシステムに追加したいので、 post_system
フックは、特定のメソッドが呼び出されたときにのみ実行されます。CodeIgniterのコントローラメソッドの内側からpost_systemフックを追加する
CodeIgniter
これをいくつかの回避策で使用できますか?
私のバージョンは3.0rc3
それは可能なはずです。 1つのアプローチは、ドキュメントに記載されているようにpost_systemフックを設定することです。$config['enable_hooks'] = TRUE;
、フックをapplication/config/hooks.php
に定義し、フッククラスを作成します。
post_systemフックを使用するコントローラでは、フック関数を実際に実行するかどうかを決定するために使用されるvarを定義します。コンストラクタでデフォルト値をFALSEに設定し、あなたが気に留めている特定のメソッドでTRUEに設定します。
post_system_hook関数でこのvarの値を確認してください。コントローラーがフックする必要があるコントローラーであることを確認することから始めることができます。クラスが「ようこそ」であると仮定しよう。
post_system_hook_function(){
//the type of $CI will be the name of the controller
if(get_class($CI) !== 'welcome') {
return false;
}
if(! $var_that_flags_do_the_task){
return false
}
//do post system code here
}
私はあなたがログに記録されているような許可を持っているかのようにコントローラをチェックしたいと思っています。
あなたは
$の設定[ 'enable_hooksは'] = TRUE、アプリケーション/設定/ config.phpの中にフックを有効にする必要があります。
次にあなたがチェックした後の結果は何あなたのapllication /フック/ PreLogin.php
class PreLogin{
public function __construct(){
$CI =& get_instance();
$this->CI->load->library('session');
}
public function auth(){
if(! isset($this->CI->session->userdata('id'))){
$this->CI->session->set_flashdata('error', 'You do not have permission to enter this url');
redirect(base_url(), 'refresh');
}
}
}
いいえ、私は特定のコントローラの特定のメソッドに対してのみ有効にするpost_systemフックについて話していました –
のコード
でアプリケーション/設定/ hooks.phpにこの行を追加する必要がありますそれ?エラーはありますか?予期しない動作? – Tpojka