我希望能找到能为我回答问题的人。我是Jamie Rumbelow的MY_Model,很想知道如果我需要在钩子里面运行一个函数,我是否可以使用它。
$hook['pre_controller'] = array(
'class' => 'Logins_model',
'function' => 'pre_init', // Run some sort of get function here
'filename' => 'logins_model.php',
'filepath' => 'models',
//'params' => array('beer', 'wine', 'snacks')
);
编辑2:你会说这是一个好的钩子还是我对此失去了所有的掌握?
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class User_hook {
private $CI;
function __construct() {
$CI =& get_instance();
}
public function validate_user() {
$this->CI->load->model('logins_model', 'login'); //Alternatively put this in autoload.php
$this->CI->load->model('users_model', 'user');
$user_id = $this->CI->session->userdata('user_id');
if (($user_id !== TRUE) && (!is_numeric($user_id)) && (strlen($user_id) < 5))
{
redirect('login');
}
$user_data = $this->CI->user->get($user_id);
$user_data->login = $this->CI->login->get_by('user_id', $user_id);
if (empty($user_data))
{
redirect('login');
}
}
}
答案 0 :(得分:3)
是的,但不使用您建议的代码。您需要创建自己的自定义钩子类,然后加载(或自动加载)并在那里调用您的模型。
同样重要的是要注意,由于CodeIgniter对象尚不可用,因此{em>不对pre_controller
挂钩起作用。钩子必须是post_controller_constructor
或更晚。以hooks/some_hook.php
为例,以此钩子类为例。
class some_hook {
private $CI;
function __construct() {
$CI =& get_instance();
}
public function some_function() {
$this->CI->load->model('logins_model'); //Alternatively put this in autoload.php
$this->CI->logins_model->some_function_in_logins();
}
}
然后你将使用:
加载它$hook['post_controller_constructor'] = array(
'class' => 'some_hook',
'function' => 'some_function',
'filename' => 'some_hook.php',
'filepath' => 'hooks'
);