Codeigniter - заставить библиотеку работать автоматически - PullRequest
0 голосов
/ 29 января 2011

У меня есть такая же библиотека

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Iadmin {

    function check()
    {
        $CI =& get_instance();
        $CI->load->helper('url');
        $CI->load->helper('cookie');
        if(!get_cookie('lemon')){
            redirect('http://www.google.com/'); 
        }
    }
}

?>

В файле autoload.php у меня есть

$autoload['libraries'] = array('iadmin');

Что я хочу сделать: если у меня нет печенья "лимон", Я буду перенаправлен на Google, когда я попытаюсь получить доступ к любой странице моего сайта

Проблема: я не перенаправлен на Google.

Ответы [ 4 ]

4 голосов
/ 29 января 2011

Вы можете расширить контроллер по умолчанию с MY_Controller, а затем расширить его на всех ваших контроллерах.

В приложении / library / MY_Controller.php

<?php
    class MY_Controller extends Controller {
        function __construct(){
            parent::__construct();

            $this->load->helper('url');
            $this->load->helper('cookie');
            if(!get_cookie('lemon')){
                redirect('http://www.google.com/'); 
            }
        }
    }
?>

в приложении / controllers / home.php

<?php   
    class Home extends MY_Controller {
        function __construct(){
            parent::__construct();
        }

        function index(){
            // Index page
        }
    }
?>

Переход на сайт www.site.com/index.php/home перенаправит вас, если у вас не будет лимонного печенья.

Возможно, вы также сможете что-то сделатькак это с крючком, я не уверен, хотя я никогда не использовал их.

1 голос
/ 30 января 2011

В этой ситуации вам нужно использовать крючки, а не библиотеки. Создайте ловушку, которая запускается до загрузки любого из ваших контроллеров, и поместите код для проверки на наличие cookie в конструкторе ловушек.

Ссылка: http://codeigniter.com/user_guide/general/hooks.html

0 голосов
/ 31 января 2011

Почему бы вам просто не поместить этот код в конструктор Iadmin class '?Это должно решить вашу проблему, метод check не вызывается автоматически.

0 голосов
/ 29 января 2011

После добавления класса в библиотеку вам нужно вызвать функцию Check (), чтобы он выполнялся, или поместить этот код в конструктор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...