我正在为学习目的制作一个小小的MVC框架。
我有一个文件和一个名为load的类,它位于我的模型文件夹中。它读取请求的文件名并检查文件是否在views文件夹中并返回正确的文件。 我遇到的问题是我正在尝试处理坏网址,以便如果请求的文件/网址没有激发,则会将您定向到views文件夹中的index.php页面...
我在函数内部有一个if语句,用于检查文件是否存在,我以为我只能写一个需要index.php文件的else语句,因为找不到该文件... 但这不起作用。当我输入一个不存在的页面时,所有我得到的都是一个白色的空白页面,即使我尝试在else语句中回应一些内容......
有谁知道遗失了什么或我做错了什么?
更新 添加了mainController类
这是孔加载类的样子:
<?php
/* model/load.php
*/
class load
{
/* This function takes parameter
* $file_name and match with file in views.
*/
function view($file_name, $data = null)
{
if (is_readable('views/' . $file_name)) {
if (is_array($data)) {
extract($data);
}
require 'views/' . $file_name;
} else {
//This is where I thought I could require the index.php file...
}
}
}
在我的控制器文件夹中,我有一个mainController类将文件发送到加载文件。 这就是mainController类的样子:
<?php
/* controller/main.php
*
*/
class mainController
{
public $load;
public $urlValues;
public function __construct()
{
$url = parse_url($_SERVER['REQUEST_URI']);
$url = explode('/', trim($url['path'], '/'));
$this->urlValues = array('controller' => $url[1]);
//Index page
if ($this->urlValues['controller'] == "index.php") {
$key = array("key" => "");
$this->load = new load();
$this->load->view('index.php', $key);
}
//Register page
if ($this->urlValues['controller'] == "register.php") {
$this->load = new load();
$this->load->view('register.php');
}
//Home page
if ($this->urlValues['controller'] == "home.php") {
$this->load = new load();
$this->load->view('home.php');
}
}
}
答案 0 :(得分:0)
看起来好像你只是在控制器匹配时调用view
方法,因此它永远不会被执行。尝试这样的事情,并从那里开始工作:
<?php
/* controller/main.php
*
*/
class mainController
{
public $load;
public $urlValues;
public function __construct()
{
$url = parse_url($_SERVER['REQUEST_URI']);
$url = explode('/', trim($url['path'], '/'));
$this->urlValues = array('controller' => $url[1]);
// ifs go here
$this->load = new load();
$this->load->view($this->urlValues['controller']);
}
}