【问题标题】:CodeIgniter access base_url() inside error_404.phpCodeIgniter 访问 error_404.php 中的 base_url()
【发布时间】:2020-12-20 23:06:37
【问题描述】:

当出现 404 Page Not Found 错误时 application/errors/error_404.php 在 CodeIgniter 中使用模板。我需要访问该模板中的base_url() 函数。关于如何在error_404.php 中访问base_url()site_url() 函数的任何建议将非常有帮助。

【问题讨论】:

    标签: codeigniter error-handling


    【解决方案1】:

    您可能想使用这个简单的技巧。只需更改以下代码:

    <?php echo base_url() ?>
    

    到:

    <?php echo config_item(‘base_url’); ?>
    

    感谢https://www.petanikode.com/codeigniter-base-url-404/ 这适用于我的情况

    【讨论】:

      【解决方案2】:

      尝试关注application/errors/error_404.php

      $CI =& get_instance();
      if( ! isset($CI))
      {
          $CI = new CI_Controller();
      }
      $CI->load->helper('url');
      echo $CI->base_url();
      

      【讨论】:

      • 已经试过了。它导致 - 致命错误:第 234 行的 D:\xampp\htdocs\developer-tools\system\core\CodeIgniter.php 中找不到类 'CI_Controller'。
      • 很高兴我找到了这个。太烦人了,CI 实例在默认错误模板中消失了! +1
      • @Utkanos 我认为设计就是这样 - 如果在 Codeigniter 有机会引导之前发生错误怎么办?那么即使你的 get_instance() 调用也会返回一个错误..
      • @digout - 当然,在启动 CI 之前发生在 PHP 级别的错误。但这些是 CI 提供的错误页面,因此期望访问实例是非常合理的。
      • @Utkanos 没有 CI 仍然可以启动,但无法加载()任何东西。以前有过。
      【解决方案3】:

      在 404 页面顶部试试这个:

      $CI =& get_instance();
      if( ! isset($CI))
      {
          $CI = new CI_Controller();
      }
      $CI->load->helper('url');
      echo base_url();
      
      // below here base_url(), site_url() will work
      

      适用于 views/errors/html 文件夹下的所有页面

      【讨论】:

      • 很棒的解决方案
      • 如果你有自动加载的 url helper 你不需要 $CI->load->helper('url');
      【解决方案4】:

      您可以直接使用这些函数,因为它们是全局函数。 例如:你在404 page template

      <html> 
      <head>
        <title> 404 Error </title>
      </head>
      <body>
        <?php echo base_url('/your path'); ?>
        <?php echo site_url('/your path'); ?>
      </body>
      </html>
      

      已编辑

      转到您的 application/config/autoload.php 文件并在自动加载数组中添加 url

      $autoload['helper'] = array('url', 'form');
      

      之后你可以在任何地方直接使用&lt;?php echo base_url('/your path'); ?&gt;

      【讨论】:

      • 直接使用这些函数会导致“致命错误:调用未定义函数 base_url()”
      • 您使用的是哪个 Codeigniter 版本?
      【解决方案5】:

      编辑你的 /application/config/routes.php

      $route['404_override'] = 'your_controller/error';
      

      在 your_controller.php 中添加函数

      function error(){
          show_404();   
      }
      

      你准备好了。

      【讨论】:

      • 我认为这是比修改error_404文件更好的解决方案
      【解决方案6】:

      请参考https://stackoverflow.com/a/48033542/7840849 或执行以下操作
      $autoload['helper'] = array('url');在 application\config\autoload.php 文件中

      然后简单地使用 echo config_item('base_url');而不是 echo base_url();在 codeigniter 默认错误页面

      【讨论】:

        【解决方案7】:

        $autoload['helper'] = array('url');在 application\config\autoload.php 文件中

        然后简单地使用 echo config_item('base_url');而不是 echo base_url();在 codeigniter 默认错误页面

        【讨论】:

          【解决方案8】:

          这适用于我的情况,试试这个方法

          将函数base_url()改为config_item('base_url')

              <?php echo config_item('base_url'); ?>
          

          【讨论】:

            【解决方案9】:
            In order to use base_url(), you must first have the URL Helper loaded. This can be done either in application/config/autoload.php
            
            $autoload['helper'] = array('url');
            Or, manually:
            
            $this->load->helper('url');
            Once it's loaded, be sure to keep in mind that base_url() doesn't implicitly print or echo out anything, rather it returns the value to be printed:
            
            echo base_url();
            
            Check if you have something configured inside the config file /application/config/config.php e.g.
            $config['base_url'] = 'http://example.com/';
            
            **Then** 
            u can use like this..
            <link rel="stylesheet" href="<?php echo base_url();?>/css/template/default.css" type="text/css" />
            

            【讨论】:

              猜你喜欢
              • 2014-06-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-16
              • 2018-07-26
              • 2016-12-09
              • 2018-11-08
              相关资源
              最近更新 更多