我正在尝试使用MVC建立一个网站,但我一开始就陷入困境。
在project0 / application / controllers中我有一个pages.php文件,如下所示:
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
if (!file_exists('application/views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}
并在project0 / application / views / pages中有两个名为home.php和about.php的文件,其中包含一个“Hello world”。
当我想访问http://project0/index.php/pages/view/about时,它会给我404错误:似乎home.php或about.php文件不存在。
有人可以帮帮我吗?
答案 0 :(得分:1)
在您的脚本中,尝试getcwd();
,然后根据相对路径'application/views/pages/'.$page.'.php'
仔细检查该结果(您当前的工作目录)。我猜你不是在你认为的目录中寻找你的页面。
答案 1 :(得分:1)
你刚刚解决了自己的错误。您的网页home.php和about.php位于:
project0/application/views
但您发布的代码正在
中查找 project0/application/views/pages/
答案 2 :(得分:1)
我认为您的代码是否可行取决于您的设置(服务器设置以及运行实际脚本的位置),但您可以使用多种方法之一使其更加万无一失。
您可以使用getcwd()函数:
if (!file_exists(getcwd().'application/views/pages/'.$page.'.php'))
或者您可以在主配置文件中定义永久站点路径,例如:
$config['path'] = '/home/project0/';
...
if (!file_exists($config['path'].'application/views/pages/'.$page.'.php'))
答案 3 :(得分:1)
尝试指定绝对路径而不是相对'application/views/pages/'.$page.'.php'
- 它可能无法正常工作。
答案 4 :(得分:1)
你可能在错误的地方检查文件,我相信file_exists
正在寻找相对于project0/application/controllers
的路径。试试这个:
if (!file_exists('../views/pages/'.$page.'.php'))