Я использую хуки для вызова класса, который выполняется до вызова контроллеров.
$hook['pre_controller'] = array(
'class' => 'CargarInformacion',
'function' => 'obtenerInfo',
'filename' => 'CargarInformacion.php',
'filepath' => 'hooks',
'params' => ''
);
Это класс
class CargarInformacion
{
function obtenerInfo()
{
$ci = &get_instance();
$informacion = $ci->db->get('sitio', 1)->row();
}
}
Но я всегда получаю ту же ошибку
Попытка получить свойство необъекта
Я знаю, что реализованы тысячи ответов, но до сих пор я не нашел правильный.
Как указано в документе codeigniter,
pre_controller
Вызывается непосредственно перед вызовом любого из ваших контроллеров. Все базовые классы, маршрутизация и проверки безопасности были
сделанный.
Вот почему вы не можете получить доступ к ссылке на суперобъект CI в pre_controller
крюк. Вы можете проверить это, сделав так.
$hook['pre_controller'] = array(
'class' => 'CargarInformacion',
'function' => 'obtenerInfo',
'filename' => 'CargarInformacion.php',
'filepath' => 'hooks',
'params' => 'pre'
);
$hook['post_controller_constructor'] = array(
'class' => 'CargarInformation',
'function' => 'obtenerInfo',
'filename' => 'CargarInformation.php',
'filepath' => 'hooks',
'params' => 'post'
);
В CargarInformation.php,
class CargarInformation {
function __construct($foo = null) {
$this->CI =& get_instance();
}
function obtenerInfo($param)
{
echo $param;
echo "<pre>";
print_r($this->CI);
echo "</pre>";
}
}
Поэтому попробуйте использовать post_controller_constructor
вместо этого, если вы хотите получить доступ к ссылке на суперобъект CI, но до того, как произойдет какой-либо вызов контроллера.
Надеюсь, это будет полезно для вас.
Других решений пока нет …