base_url()函数不能在错误页面上工作。即使在自动加载之后

时间:2016-06-27 07:41:29

标签: php codeigniter

我想拥有漂亮好看的错误页面。为此,我需要获得一些CSS和JS文件。但是由于某些奇怪的原因,使用base_url()对error_pages不起作用。我当然可以使用href="/css/style.css"并告诉它从根文件夹中获取它。但是网站很可能放在与根文件夹不同的文件夹中。因此,使用/不是一种选择。

所以现在我的问题是为什么没有base_url()在错误页面上工作?我已经自动加载它所以不应该工作吗?

这是我在尝试从视图中的error_404页面获取base_url()时尝试过的。

在我的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

更新 我想在每个错误页面上调用base_url(db,404,general,php等)。

3 个答案:

答案 0 :(得分:5)

自动加载器不起作用,因为自动装带器在 完成错误检查后加载库 。如果出现404 not found之类的错误,则会在不加载自动加载器的情况下查看自定义错误页面。

要在自定义页面上获取base_url,您需要在自定义错误页面中添加以下内容:

$base_url = load_class('Config')->config['base_url'];

取自: http://forum.codeigniter.com/thread-65968-post-335822.html#pid335822

答案 1 :(得分:1)

您必须加载帮助程序类才能获取访问URL函数。所以,先尝试一下:

$this->load->helper('url');

然后你可以使用

回应它
echo base_url();

或者,您可以使用

获得相同的结果
$this->config->config['base_url'];

答案 2 :(得分:0)

为此,您必须覆盖routes.php文件中的错误页面,如

$route['404_override'] = 'controller/method';

method()函数内部,您可以在加载uri helper之后访问base_url(),与普通的codeigniter控制器一样。

$this->load->helper('uri');
echo base_url();

如果我们需要更改其他php / db错误页面的设计。我们可以编辑以下文件 enter image description here