Codeigniter MY_loader не загружается

Я пытаюсь создать шаблон заголовка / тела / нижнего колонтитула в CodeIgniter, аналогичный описанному в:
Верхний и нижний колонтитулы в CodeIgniter

Мой код хранится в \ application \ core \ MY_loader.php:

<?php
class MY_Loader extends CI_Loader {

public function load_template($template_name, $vars = array(), $return = FALSE)
{
if($return):
$content  = $this -> view('templates/header', $vars, $return);
$content .= $this -> view($template_name, $vars, $return);
$content .= $this -> view('templates/footer', $vars, $return);

return $content;

else:
$this -> view('templates/header', $vars);
$this -> view($template_name, $vars);
$this -> view('templates/footer', $vars);

endif;
}
}
?>

Код моего контроллера хранится в application \ controllers \ Manager.php:

class Managers extends CI_Controller {
function login()
{
$this -> load -> load_template('managers/login');
}
}

Когда я просматриваю BASE_URL / Manager / login, я получаю эту ошибку:

Вызов неопределенного метода CI_Loader :: load_template ()

Моя интерпретация этого заключается в том, что система не расширяет CI_Loader с помощью MY_Loader, а вместо этого полностью игнорирует MY_Loader. Эта настройка работала над моей локальной установкой сайта, когда я запускал его под XAMPP, но он перестал работать после того, как я перенес сайт на веб-хостинг. Я не помню изменения конфигурации CI (хотя я мог бы иметь), и при этом я не знаю, связано ли это с проблемой конфигурации на новом хосте.

Я ищу какие-либо указания относительно того, что может мешать MY_loader расширять CI_loader. Мне не удалось найти подобные сообщения; все другие проблемы, которые я обнаружил, связанные с MY_loader, предполагают, что переопределение уже работает.

0

Решение

Файл должен называться «MY_Loader.php» — он чувствителен к регистру и НЕ совпадает с «MY_loader.php».

В отличие от единственного другого ответа в настоящее время, «My_loader.php» также не будет работать, так как subclass_prefix применяется отдельно от имени библиотеки.

Простейший способ проиллюстрировать это:

$libraryName = 'loader';

$className   = ucfirst(strtolower($libraryName));
$className   = config_item('subclass_prefix').$className;

$fileName    = $className.'.php';
1

Другие решения

Сохраните это как MY_Loader.php (благодаря предложению другого друга, что буква «L» также должна быть заглавной)

    public function load_template($template_name, $vars = array(), $return = FALSE)
{
$CI = & get_instance();
if($return):
$content  = $CI->load->view('templates/header', $vars, $return);
$content .= $CI->load->view($template_name, $vars, $return);
$content .= $CI->load->view('templates/footer', $vars, $return);

return $content;

else:
$CI->load->view('templates/header', $vars);
$CI->load->view($template_name, $vars);
$CI->load->view('templates/footer', $vars);

endif;
}
}
?>

Я надеюсь, что смогу помочь. Хорошего дня.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector