footer.php中无法访问base_url()

时间:2014-02-15 14:07:02

标签: php codeigniter

我在每个视图中都包含两个文件,分别是nav.phpfooter.php。 所有会话可变量和base_url()都在nav.php文件中工作,但是当我想在footer.php中执行相同操作时,它无效。

url帮助文件通过config/autoload.php自动加载为

  

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

我花了一整天的时间来弄清楚自己,但它不起作用。

nav.php

                <ul class="nav navbar-nav">
                <li><a href="<?php echo base_url('projects/new_project'); ?>">Post New Project</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Projects <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="<?php echo base_url('projects'); ?>">All Projects</a></li>
                        <li><a href="<?php echo base_url('projects?t=featured'); ?>">Featured Projects</a></li>
                    </ul>
                </li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Funds <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="<?php echo base_url('funds/upload'); ?>">Upload Funds</a></li>
                        <li><a href="<?php echo base_url('funds/withdrow'); ?>">Withdraw Funds</a></li>
                    </ul>
                </li>
            </ul>

footer.php

            <ul class="footer-list">
                <li><a href="<?php echo base_url('users/login'); ?>">Login</a></li>
                <li><a href="<?php echo base_url('users/Register'); ?>">Register</a></li>
            </ul>

在我的viewname.php文件中,我将它们称为

        <?php include('includes/nav.php'); ?>
        Other code here
        <?php include('includes/footer.php'); ?>

nav.php工作正常但footer.php无效。

autoload.php

(Line :67) $autoload['helper'] = array('url', 'file');

的config.php

(Line :17) $config['base_url']  = 'http://localhost/cl';

1 个答案:

答案 0 :(得分:2)

可能缺少回声?

并确保自动加载不会被多次声明。

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

  

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

或者,手动:

  

$这 - &GT;负载&GT;辅助( 'URL');

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

  

echo base_url();

还要记住返回的值是配置文件中提供的网站的基本网址。 CodeIgniter也将在配置文件中容纳一个空值:

  

如果未设置此(base_url),则CodeIgniter将猜测   协议,域和安装路径   application / config / config.php,第13行

编辑: 更改以下

  

包括( '包括/ nav.php'); //这里的其他代码
  包括( '包括/ footer.php');

$this->load->view('includes/nav.php'); 
// Other code here 
$this->load->view('includes/footer.php');

我不会在MVC框架中使用此方法,因为不需要使用$ this-&gt; load-&gt;视图。另一件事是路径必须是绝对/相对的,这意味着如果您确实更改了文件夹结构,则必须更新所有include语句。它真的反对MVC结构。如果我们能够使用解析器或已定义的方法执行此操作,那么为什么我们在另一个视图中调用view:)