Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 154 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Codeigniter

Создание собственного обработчика 404 ошибок в CodeIgniter

  • 07.10.2012

Рассмотрим довольно простой и быстрый способ создания контроллера для обрабатки 404 ошибок.

Данный скрипт предназначен для обработки 404 ошибки как в том случае, если у Вас полностью отсутствует контроллер, так и при условии если контроллер есть, но в нем не описан необходимый метод.

system/application/controllers/error.php

[sourcecode language=’php’]error_404();
function _validate_request($segments)
{
// Сделать необходимый контроллер в корневой папке?
if (file_exists(APPPATH.’controllers/’.$segments[0].EXT))
{
return $segments;
}

// Является контроллером в подпапке?
if (is_dir(APPPATH.’controllers/’.$segments[0]))
{
// Установите каталог и удалите это из части массива
$this->set_directory($segments[0]);
$segments = array_slice($segments, 1);

if (count($segments) > 0)
{
// Сделать необходимый контроллер в конкретной подпапке?
if ( ! file_exists(APPPATH.’controllers/’.$this->fetch_directory().$segments[0].EXT))
{
return $this->error_404();
}
}
else
{
$this->set_class($this->default_controller);
$this->set_method(‘index’);

// Сделать значение контроллера по умолчанию в необходимой подпапке?
if ( ! file_exists(APPPATH.’controllers/’.$this->fetch_directory().$this->default_controller.EXT))
{
$this->directory = »;
return array();
}
}

return $segments;
}

// не находит необходимый контроллер…
return $this->error_404();
}

function error_404()
{
$this->directory = «»;
$segments = array();
$segments[] = $this->error_controller;
$segments[] = $this->error_method_404;
return $segments;
}

function fetch_class()
{
// изменить, если метод отсутствует в классе
// класс к ошибке и метод к error_404
$this->check_method();

return $this->class;
}

function check_method()
{
$ignore_remap = true;

$class = $this->class;
if (class_exists($class))
{
// метод для этого класса
$class_methods = array_map(‘strtolower’, get_class_methods($class));

// игнорируем контроллер using _remap()
if($ignore_remap && in_array(‘_remap’, $class_methods))
{
return;
}

if (! in_array(strtolower($this->method), $class_methods))
{
$this->directory = «»;
$this->class = $this->error_controller;
$this->method = $this->error_method_404;
include(APPPATH.’controllers/’.$this->fetch_directory().$this->error_controller.EXT);
}
}
}

function show_404()
{
include(APPPATH.’controllers/’.$this->fetch_directory().$this->error_controller.EXT);
call_user_func(array($this->error_controller, $this->error_method_404));
}

}

/* Окончание файла MY_Router.php */
/* Местонахождение: ./system/application/libraries/MY_Router.php */[/sourcecode]

Примечания:

Работа с контроллером через remap().

Они проигнорированы, так как нет возможности сработала 404 или нет. В тоже время, если Вы все же намерены вызывать 404 ошибку из контроллера при отсутствии соответствующего метода замените $ignore_remap на false.

Называем вручную 404 страницу

[sourcecode language=’php’]$this->router->show_404();[/sourcecode]

Пример случая использования: /store/product/3 вызван, при этом product() существует, но продукта 3 не существует.

Обратите внимание: обязательно внутри метода «с ошибкой» замените все использования $this на $CI

[sourcecode language=’php’]$CI =& get_instance();
$CI->output->set_status_header(‘404’);[/sourcecode]

Автор: Jérôme Jaglale

Источник: maestric.com

jokar

Предыдущий материал
  • Примеры рекламы

Шторы Mr.Curtain

  • 03.10.2012
  • KLOSSS
Read More
Следующий материал
  • Примеры рекламы

Кофе Aroma Coffee

  • 08.10.2012
  • KLOSSS
Read More
Вас также может заинтересовать
Свежие посты
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
  • 5-55: История компании
    • 01.03.23
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter