Я хочу иметь хорошие страницы с хорошим поиском. Для этого мне нужно получить некоторые файлы CSS и JS. Но по какой-то нечетной причине использование base_url()
не работает на error_pages. Я мог бы, конечно, просто использовать href="/css/style.css"
и сказать, чтобы получить его из корневой папки. Но сайт вполне может быть помещен в другую папку, кроме корневой папки. Поэтому использование параметра /
не является вариантом.
Итак, теперь мой вопрос заключается в том, почему base_url()
работает на странице с ошибкой? Я автоматически загрузил его, поэтому он не должен работать?
Это то, что я пробовал, когда пытался получить base_url () с страницы error_404 в представлении.
В моем autoload.php я включил вспомогательный url
$autoload['helper'] = array('url', 'form');
И на моей странице error_404 (application / views / errors / html / error_404.php) я повторяю base_url так:
<?php echo base_url(); ?>
Это ошибка, которую я получаю:
An uncaught Exception was encountered Type: Error Message: Call to undefined function base_url() Filename: /usr/local/www/example.com/application/views/errors/html/error_404.php Line Number: 37 Backtrace: File: /usr/local/www/example.com/index.php Line: 315 Function: require_once
Я бы предпочел не вносить никаких изменений в system
папку, так как я не хочу повторять этот процесс каждый раз, когда я обновляю папку Codeigniter.
система:
Codeigniter 3.0.6
PHP 7.0.8
Nginx 1.11.1
UPDATE: Я бы хотел вызвать base_url на каждой странице ошибки (db, 404, general, php и т. Д.).
Автозагрузчик не работает, поскольку автозагрузчик загружает библиотеки после завершения проверки ошибок. Если есть ошибки, такие как 404 not found
он будет просматривать страницу пользовательской ошибки без загрузки автозагрузчика.
Чтобы получить base_url на пользовательской странице, вам нужно добавить следующее на странице пользовательских ошибок:
$base_url = load_class('Config')->config['base_url'];
Снято с: http://forum.codeigniter.com/thread-65968-post-335822.html#pid335822
Вы должны загрузить вспомогательный класс, чтобы получить функции URL-адреса доступа. Итак, постарайтесь сделать сначала:
$this->load->helper('url');
Затем вы можете повторить его, используя
echo base_url();
альтернативно, вы можете получить тот же результат с помощью
$this->config->config['base_url'];
Чтобы сделать это, вы должны переопределить страницы ошибок в файле routes.php, что-то вроде
$route['404_override'] = 'controller/method';
И внутри method()
вы можете получить доступ к base_url()
после загрузки помощника uri так же, как и обычный контроллер codeigniter.
$this->load->helper('uri'); echo base_url();
если нам нужно изменить дизайн других страниц ошибок php / db. Мы можем редактировать следующие файлы