Codeigniter PHP require_once有效,但load->视图没有

时间:2013-07-28 01:42:16

标签: php codeigniter

我面临一个奇怪的问题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.phptemplate.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 个答案:

答案 0 :(得分:2)

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

如果header.phpfooter.phptemplate.php(您要加载的主模板)位于同一文件夹中,则仍需要引用完整路径,从{{1}开始}:

admin/

答案 1 :(得分:1)

从上面的代码中,您的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'); ?>

答案 2 :(得分:1)

以上答案正确。但这是针对使用codeigniter 4的用户的。您需要执行以下操作:

<?php echo view('admin/header'); ?>
<?php echo view($maincontent); ?>
<?php echo view('admin/footer'); ?>

答案 3 :(得分:0)

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

public function __construct()
{
    parent::__construct();
}