我面临一个奇怪的问题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.php
和footer.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';
答案 0 :(得分:2)
对load->view()
的所有调用都使用相对于application/views
的路径,而不是相对于调用它的文件。 (他们也根本不考虑你的路线)
如果header.php
和footer.php
与template.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();
}