PHP函数参数don';工作不正常


PHP function parameters don't work properly?

我正试图使用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'))