Запускать функцию каждый раз, когда страница загружается в CodeIgniter - PullRequest
2 голосов
/ 30 сентября 2011

Ранее я делал только веб-приложения в Asp.Net MVC, и там вы можете использовать OnResultExecuted в "ActionFilter", установленном в BaseController, чтобы запускать метод каждый раз, когда выполняется метод действия (т.е., в основном, каждый раз, когда кто-либо посещает какой-либостраница в приложении).

Как бы я сделал то же самое в CodeIgniter / PHP?

РЕДАКТИРОВАТЬ:

Вместо этого я попытался использовать post_controller_constructor, согласно одному из предложений, но это не помогает:

$hook['post_controller_constructor'] = array(
                                'class'    => 'PreController',
                                'function' => 'getIp',
                                'filename' => 'preController.php',
                                'filepath' => 'hooks'
                                );

Я все еще получаю неопределенное свойство: PreController :: $ input (я просто не переименовал класс с именем, это не должно иметь значения, если он все еще называется PreControllerна данный момент).

Но факт остается фактом: у меня нет доступа к свойству ввода ... Очевидно, у меня нет доступа к классу ввода, так как мне это сделать?Я верю, что если бы я сделал то же самое в контроллере, все было бы хорошо, но с крючка?Как мне это сделать?

1 Ответ

5 голосов
/ 30 сентября 2011

Для этого можно использовать хуки CodeIgniter: http://www.codeigniter.com/user_guide/general/hooks.html

Есть несколько «событий», которые вы можете подключить, проверьте нижнюю часть страницы документации.


В ответ на комментарий:

Перечитайте ваш комментарий и отредактируйте ... кажется, вы предполагаете, что ваш класс ловушек является текущим контроллером - это не так. Текущий контроллер - это то, что соответствует URI / отображению маршрута (например, site.com/users/view/1 будет использовать контроллер Users, а не класс обработчика хука PreController). Обработчик хука может быть простым классом PHP, не наследующим от CI_Controller.

Первое, что вам нужно сделать в обработчике ловушек, это получить фактический контроллер, который будет содержать ссылку Input и другие.

class HookHandler {
    function post_controller_constructor() {
        $ci =& get_instance();
        // ... now you can use $ci->input and other controller members
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...