【问题标题】:base_url() function not working in codeigniterbase_url() 函数在 codeigniter 中不起作用
【发布时间】:2011-09-20 22:04:36
【问题描述】:

在我的 web 应用程序中使用 codeigniter。我正在尝试使用 base_url() 函数,但它显示空结果。我也通过自动加载文件使用了自动加载助手,但它似乎也不起作用。我也定义了基本常量,但都是徒劳的。

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title><?php echo $title; ?></title>        
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <link rel="stylesheet" href="<?php echo base_url();?>/css/template/default.css" type="text/css" />
        <script type="text/javascript">
            //<![CDATA[
            base_url = '<?= base_url();?>';
            //]]>
        </script>
    </head>

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • @Jonathan Sampson:我尝试使用 echo base_url();在主体部分并得到一个空结果
  • @Sanks 你能告诉我们生成的 HTML 吗?我看到您在脚本区域使用短标签打印,在样式表区域使用标准回显输出。
  • @Jonathan Sampson:谢谢伙计,这件事成功了 $this->load->helper('url')。但我想知道为什么助手没有自动加载?为什么我们必须在顶部打印这个东西?
  • @Sanks 查看第 67 行的application/config/autoload.php。确保看到$autoload['helper'] = array('url');

标签: php codeigniter


【解决方案1】:

这个所有直接访问函数将仅通过帮助类加载。

像 URL、安全、文件都是 Helpers,你也可以加载自定义 Helpers。

config/autoload.php

$autoload['helper'] = array('url', 'file', 'authorization', 'custom');

【讨论】:

    【解决方案2】:

    除了确保你已经设置了 config/autoload.php:

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

    从以下位置更改 application/config/config.php:

    $config['base_url'] = 'http://example.com/';
    

    成为动态基础网址:

    $config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https": "http");
    $config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
    $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
    

    并使用 php 中的主机在本地运行它,下面只是一个示例端口。

    php -S localhost:2000
    

    【讨论】:

      【解决方案3】:

      我花了几个小时遇到了这个问题,但是以不同的方式解决了它。您可以看到,我刚刚在应用程序文件夹之外创建了一个资产文件夹。最后,我在页眉部分链接了我的样式表。文件夹结构如下图。

      在执行此操作之前,您应该在控制器类方法/__constructor 文件或 autoload.php 文件中包含 url 帮助文件。还要在以下文件中更改$config['base_url'] = 'http://yoursiteurl'; application/config/config.php

      如果你将它包含在控制器类方法/__constructor 中,那么它看起来像

      public function __construct()
      {
          $this->load->helper('url');
      }
      

      或者如果你加载自动加载文件,那么它看起来像

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

      最后,添加您的样式表文件。 您可以通过不同方式链接样式表,将其包含在您的内部部分中

      ->&lt;link rel="stylesheet" href="&lt;?php echo base_url();?&gt;assets/css/style.css" type="text/css" /&gt;

      -> 或

      <?php
      
          $main = array(
          'href'       => 'assets/css/style.css',
          'rel'        => 'stylesheet',
          'type'       => 'text/css',
          'title'      => 'main stylesheet',
          'media'      => 'all',
          'index_page' => true
          );
      
      
      echo link_tag($main); ?>
      

      -> 或

      最后我得到了更可靠的代码清洁概念。只需在 application/config/styles.php 文件夹中创建一个名为 styles.php 的配置文件。 然后在 styles.php 文件中添加一些链接,如下所示

      <?php
       $config['style'] = array(
          'main' => array(
              'href'       => 'assets/css/style.css',
              'rel'        => 'stylesheet',
              'type'       => 'text/css',
              'title'      => 'main stylesheet',
              'media'      => 'all',
              'index_page' => true
          )
       );
      
      ?>
      

      调用/将此配置添加到您的控制器类方法如下所示

      $this->config->load('styles');
      $data['style'] = $this->config->config['style'];
      

      在您的标头模板中传递此数据如下所示。

      $this->load->view('templates/header', $data);
      

      最后添加或链接您的 css 文件如下所示。

      <?php echo link_tag($style['main']); ?>
      

      【讨论】:

        【解决方案4】:

        问题 - 我想加载我的 css 文件,但即使我自动加载和手动加载它也无法正常工作,为什么?我找到了解决方案 => 这是我的解决方案: 应用程序>配置>config.php $config['base_url'] = 'http://localhost/CodeIgniter/'; //将链接粘贴到base url

        问题解释:

        " > 我在 assets/css 文件夹中有我的 bootstrap.min.css 文件,其中 assets 是我创建的根目录。但是即使我加载它也不起作用? 1. $autoload['helper'] = array('url'); 2. $this->load->helper('url');在我的控制器中,然后我去我的

        【讨论】:

        • 恐怕你的帖子不是答案。请使用本指南开始一个新问题:“我如何提出一个好问题?”这里:stackoverflow.com/help/how-to-ask
        • 感谢 Guillaume RAYMOND,让我如何进行最佳搜索,我应该如何将我的问题与答案一起包含在内,我已经给出了对我有用的最佳答案。谢谢你来到这里!
        • 不客气,请使用此页面提出您的问题:stackoverflow.com/questions/ask,然后如果您认为自己有答案,请像在此处一样添加问题的答案。那么现在让我在这里发表评论,我们将与其他版主一起投票清理当前的帖子。
        【解决方案5】:

        如果你直接在 Codeigniter 框架中直接使用任何东西,比如base_url()uri_string()word_limiter(),所有这些都来自框架的某种Helper 功能。

        虽然Helpers 中的一些可以在全球范围内使用,就像log_message() 在任何地方都非常有用,但其余的帮助程序是可选的,并且用例因应用程序而异。 base_url() 是框架的url 助手中定义的函数。

        您可以在Codeigniter user guide's helper section.了解更多关于助手的信息

        你可以使用base_url()函数,一旦你的当前类可以访问它,你需要先加载它。

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

        在使用base_url() 函数之前,您可以在应用程序的任何位置使用此行。

        如果你需要经常使用,我建议在autoload helpers部分的config/autoload.php添加这个功能。

        另外,请确保您在 config/config.php 文件中明确定义了 base_url 值。

        这将是您将看到的第一个配置,

        $config['base_url'] = 'http://yourdomain.com/'; 
        

        您可以通过以下方式快速查看

        echo base_url();
        

        参考:https://codeigniter.com/user_guide/helpers/url_helper.html

        【讨论】:

          【解决方案6】:

          在控制器中加载 url helper

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

          【讨论】:

            【解决方案7】:

            首先加载 URL 助手。您可以加载“config/autoload.php”文件并添加以下代码 $autoload['helper'] = array('url');

            或在控制器中添加以下代码

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

            然后去cofig文件夹中的config.php进行设置

            $config['base_url'] = 'http://urlbaseurl.com/';
            

            希望这会有所帮助 谢谢

            【讨论】:

              【解决方案8】:

              我认为您尚未编辑 codeigniter 文件以启用 base_url()。您尝试在 url_helper.php 中分配它,您也可以执行相同的 config/autoload.php 文件。你可以在你的 autoload.php 中添加这段代码

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

              你将能够像这样使用 base_url()

              <link rel="stylesheet" href="<?php echo base_url();?>/css/template/default.css" type="text/css" />
              

              【讨论】:

                【解决方案9】:

                如果你不想使用 url helper,你可以使用以下变量获得相同的结果:

                $this->config->config['base_url']
                

                它将为您返回基本网址,无需额外步骤。

                【讨论】:

                  【解决方案10】:

                  如果你想使用base_url(),那么我们需要加载url helper。

                  1. 通过使用自动加载$autoload['helper'] = array('url');
                  2. 或通过手动加载控制器或视图$this-&gt;load-&gt;helper('url');

                  然后您可以在控制器或视图中的任何位置使用base_url()

                  【讨论】:

                    【解决方案11】:

                    检查您是否在配置文件/application/config/config.php 中配置了某些内容,例如

                    $config['base_url'] = 'http://example.com/';
                    

                    【讨论】:

                      【解决方案12】:

                      为了使用base_url(),您必须首先加载 URL Helper。这可以在application/config/autoload.php(在第 67 行或附近)中完成:

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

                      或者,手动:

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

                      一旦加载,请务必记住 base_url() 不会隐式打印或回显任何内容,而是返回要打印的值:

                      echo base_url();
                      

                      还请记住,返回的值是配置文件中提供的站点的基本 url。 CodeIgniter 也会在配置文件中容纳一个空值:

                      如果这个 (base_url) 没有设置,那么 CodeIgniter 会猜测你安装的协议、域和路径。

                      application/config/config.php,第 13 行

                      【讨论】:

                      • 猜测echo 或缺少什么?否则这不应该发生,如果助手拼写错误或不存在,自动加载将阻塞。如果未定义函数,至少 php 会抛出错误。 base_url() 应该总是返回 something附录:请注意,在 2.0.2 中配置值可以为空,并且会自动检测基本 url,因此它不可能为空。
                      • @Wesley 我怀疑这也是对echo 的缺失呼叫。
                      • @Jonathan Sampson:如前所述,我已经加载了自动加载助手。但它似乎仍然不起作用。我已经阅读了 codeigniter 用户指南,并且我认为 URL 助手存在。
                      • @SanksR 您是否在通话前放置echo?请使用相关代码更新您的问题,以便我们更好地为您提供帮助。
                      • @Jonathan Sampson:谢谢你。它现在使用自动加载助手工作正常。问题是我不止一次声明了自动加载。
                      猜你喜欢
                      • 2021-08-24
                      • 2016-04-11
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-05-16
                      • 1970-01-01
                      • 2017-06-13
                      相关资源
                      最近更新 更多