1

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

4

3 回答 3

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 方法。

于 2013-04-17T22:11:17.363 回答
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'); ?>
于 2013-04-17T16:37:52.180 回答
0
<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

在这里,您做错了两件事。

  1. 代码不应在 include_once 中有回显。所以你的代码应该是

include_once(base_url() .'/template/layout/header.php');

  1. 您正在尝试使用 url 而不是绝对路径加载文件。如果 php.ini allow_url_open 设置为关闭,则不能使用 base_url 包含文件(返回站点 url http://www.domain.com/ )。

您可以使用 str_replace(SYSDIR.'/', '',BASEPATH) 获取到 base 的绝对路径

所以下面的代码将起作用:

$abs_path = str_replace(SYSDIR.'/', '',BASEPATH);
include_once($abs_path .'/template/layout/header.php');

正如上面 2 篇文章中所说,在 CI 中执行此操作的正确方法是将其放在视图文件夹中并使用 CI 加载功能加载它。

于 2013-04-18T02:36:26.240 回答