базовый контроллер и применить его ко всем существующим контроллерам - PullRequest
0 голосов
/ 06 января 2012

Мне нужно создать базовый контроллер codeigniter для проверки разрешенного IP-адреса в базе данных с помощью функции mobel, если ip существует, тогда пользователь должен перейти на домашнюю страницу, но если ip-адрес не существует и показать страницу 404 в codeigniter, я могу 'найти основную папку в папке приложения

Ответы [ 3 ]

5 голосов
/ 06 января 2012

Сначала вам нужно расширить базовый класс, назвать его MY_Controller.php

Сохранить этот файл в: application / core / MY_Controller.php

class MY_Controller extends CI_Controller {
    function __construct()
    {
        parent::__construct();

        $this->load->model('ip_table_model');
        $this->load->library('input');

        // assuming there's a function called "check_ip($ip_address)" in ip_table_model
        if (!$this->ip_table_model->check_ip($this->input->ip_address()) {
             redirect('error_404');
        }
    }    
}

Теперь мы предполагаем, что у вас есть модель с именем ip_table_model , которая подключается к базе данных со списком IP-адресов, и есть функция с именем check_ip , которая будет проверятьесть ли у пользователя доступ или нет.Это относительно просто, и я не буду показывать никаких примеров по этому поводу.

Страница redirect('error_404'); еще не существует, вам нужно создать контроллер, который показывает вашу страницу 404.

Теперь для любых других контроллеров в вашем проекте вместо расширений CI_Controller установите вместо них расширение MY_Controller .

Вот пример:

class Welcome extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('welcome_message');
    }
}

Объяснение: Мы расширяем CI_Controller для создания нашего собственного основного контроллера, называемого MY_Controller .Внутри мы проверяем, есть ли у пользователя доступ или нет через конструктор, который будет вызываться во всех остальных контроллерах проекта.

Ссылки:

1 голос
/ 20 октября 2016

В Core Создайте новый класс. Имя MY_Controller.php

class MY_Controller extends CI_Controller {
 // Write your functions here which you wanna use throughout the website
public function abc (){
  echo "Helllo";

}
}


class Welcome extends MY_Controller {

        function __construct()
        {
            parent::__construct();
        }

        function your_custom_fuctions()
        {

            $this->abc(); //echo Hello...
 //Anything you want to do
        }
}
1 голос
/ 06 января 2012

Ответ здесь (раздел Расширение базового класса ).

1.7.2 имеет структуру, отличную от 2.0. *, Поэтому в приложении нет папки core

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