我正试图使用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文件似乎不存在。
有人能帮我吗?
在脚本中,尝试getcwd();
,然后根据相对路径'application/views/pages/'.$page.'.php'
仔细检查该目录(当前工作目录)的结果。我猜你不是在你认为的目录中寻找你的页面。
您刚刚解决了自己的错误。您的主页.php和about.php位于:project0/application/views
但你发布的代码正在中寻找它们
project0/application/views/pages/
我认为您的代码是否能工作取决于您的设置(服务器设置和实际脚本的运行位置),但您可以使用几种方法中的一种使其更加简单。
您可以使用getcwd()函数:
if (!file_exists(getcwd().'application/views/pages/'.$page.'.php'))
或者,您可以在主配置文件中定义一个永久站点路径,例如:
$config['path'] = '/home/project0/';
if (!file_exists($config['path'].'application/views/pages/'.$page.'.php'))
尝试指定绝对路径而不是相对'application/views/pages/'.$page.'.php'
-它可能无法正常工作。
您可能在错误的位置检查文件,我相信file_exists
正在查找相对于project0/application/controllers
的路径。试试这个:
if (!file_exists('../views/pages/'.$page.'.php'))