0

我面临一个奇怪的问题 1 小时,我在互联网和这个论坛上搜索了它,但找不到我正在寻找的解决方案。我正在使用 codeigniter 框架来开发一个小产品。所以这是我的问题:

我有一个名为的控制器music.php,它只是加载模板视图:

/* music.php */
public function index()
{
    $data['main_content'] = 'admin/music/list';
    $this->load->view('admin/template', $data);  
}

的内容admin/template.php如下

<?php $this->load->view('header'); ?>
<?php $this->load->view($main_content); ?>
<?php $this->load->view('footer'); ?>

header.phpfooter.php位于同一文件夹中template.php。现在,当我尝试访问该文件时,浏览器显示错误"Unable to load the requested file: header.php"。但相反,如果我使用require_once("header.php")它可以正常工作。任何人都可以解决这个问题

编辑1:我route.php

$route['default_controller'] = "homepage";
$route['404_override'] = '';
$route['admin'] = 'admin/music';
4

4 回答 4

1

所有调用都load->view()使用相对于 的路径application/views,而不是相对于调用它的文件。(他们也根本不考虑您的路线)

如果header.phpfooter.php位于与template.php(您正在加载的主模板)相同的文件夹中,您仍然需要引用完整路径,以admin/

<?php $this->load->view('admin/header'); ?>
<?php $this->load->view($main_content); ?>
<?php $this->load->view('admin/footer'); ?>
于 2013-07-28T01:47:59.637 回答
1

上面的答案是对的。但这个答案适用于使用 codeigniter 4 的人。您需要执行以下操作:

<?php echo view('admin/header'); ?>
<?php echo view($maincontent); ?>
<?php echo view('admin/footer'); ?>
于 2020-05-09T06:01:46.527 回答
0

从上面的代码中,您的文件夹中似乎有header.php and footer.php文件application/view/admin/。因此使用:

<?php $this->load->view('admin/header'); ?>
<?php $this->load->view($main_content); ?>
<?php $this->load->view('admin/footer'); ?>
于 2013-07-28T01:50:47.483 回答
0

我遇到过同样的问题。我认为它与缺少的构造函数有关。至少,这为我解决了问题。将此添加为控制器中的第一个函数:

public function __construct()
{
    parent::__construct();
}
于 2014-02-28T03:38:29.477 回答