我已经在StackOverflow上阅读了类似的主题,但不幸的是没有人解决这个问题(或者我只是没有看到正确的主题)。
我在视图home.php
中有以下内容:
<?php include_once(echo base_url() .'/template/layout/header.php'); ?>
现在我的结构是这样的:
/public_html
/template
/layout
/header.php
/footer.php
该文件不包含,有谁知道为什么?
注意:我已将$config['base_url']
设为www.domain.com
答案 0 :(得分:2)
根据文档base_url()
:
此函数返回与
site_url()
相同的内容,没有 index_page或url_suffix被追加。
所以它应该返回http://www.domain.com/
,这在include_once()
您要使用的是CI常量APPPATH
:
<?php include_once(APPPATH . 'template/layout/header.php'); ?>
如前所述,您应该将视图放在视图文件夹中并加载它们而不是包含它们。这是正确的CI方法。
答案 1 :(得分:0)
为什么不将您的观点置于/application/views/
下,然后像这样加载它们?
$this->load->file('application/views/layout');
$this->load->view('layout.php');
无论如何你必须这样做:
<?php include_once(base_url().'/template/layout/header.php'); ?>
而不是:
<?php include_once(echo base_url() .'/template/layout/header.php'); ?>
答案 2 :(得分:0)
<?php include_once(echo base_url() .'/template/layout/header.php'); ?>
这里你做错了两件事。
include_once(base_url()。'/ template / layout / header.php');
你可以使用str_replace获取base的绝对路径(SYSDIR。'/','',BASEPATH)
以下代码将起作用:
$abs_path = str_replace(SYSDIR.'/', '',BASEPATH);
include_once($abs_path .'/template/layout/header.php');
正如上面2篇文章中所述,在CI中执行此操作的正确方法是将其放在视图文件夹中并使用CI加载函数加载它。