我有一些代码,我希望在请求发送到客户端并关闭后工作,所以我想从控制器内部向系统添加post_system
挂钩,因此CodeIgniter
挂钩运行仅在调用特定方法时。
3.0rc3
允许在某些变通办法中使用吗?
我的版本是Bundle extras = data.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
//use bitmap however you like...
答案 0 :(得分:0)
应该可以。一种方法是设置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
}
答案 1 :(得分:-1)
我知道你想要检查一个控制器,好像它已经记录下来了。
您需要在application / config / config.php
中启用挂钩$ config ['enable_hooks'] = TRUE;
然后你需要在你的application / config / hooks.php中用代码
添加这一行$hook['pre_controller'] = array(
'class' => 'PreLogin',
'function' => 'auth',
'filename' => 'PreLogin.php',
'filepath' => 'hooks'
);
在您的apllication / hooks / 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');
}
}
}