繁体   English   中英

PHP函数参数不能正常工作?

[英]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'仔细检查该结果(您当前的工作目录)。 我猜您不是在您认为的目录中寻找页面。

您只是解决了自己的错误。 您的页面home.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'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM