[英]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.