1

我正在尝试使用正确的路径parse_url$_SERVER['REQUEST_URI']显示正确的页面,但是我遇到的问题是只有我的index.php页面正在显示。

我页面的 urlindex.php应该localhost/mvc-framework是正确的,但是当我接受时: localhost/mvc-framework/file.php它也显示了我的index.php. 基本上我在某个文件夹之后输入的任何内容也会显示index.php页面......

我真的希望有人能帮助我,因为我已经为此苦苦挣扎了将近 3 个洞天。 我可能很愚蠢:/

我在“mvc-framework”中有所有文件,在里面我有一个index.php将所有内容联系在一起的文件和 3 个文件夹:“controller”、“model”、“views”。

在控制器文件夹中,我有一个名为 main.php 的文件,我正在尝试获取 url:

<?php
/* controller/main.php
 */
class mainController
{
    public $load;
    public $urlValues;

    public function __construct()
    {
        $url = parse_url($_SERVER['REQUEST_URI']);
        $url = explode('/', $url['path']);  
        $this->urlValues = array('controller' => $url[1]);

        //index page
        if ($this->urlValues['controller'] == "mvc-framework") {

        $text = array("key" => "Hello");

        $this->load = new load();
        $this->load->view('index.php', $text);   
        }

        //register page
        elseif ($this->urlValues['controller'] == "mvc-framework/test.php") {

        $text = array("key" => "Test");

        $this->load = new load();
        $this->load->view('test.php', $text);   
        } else {
            echo 'error';
        }

    }        
}

在“模型”文件夹中,我有一个名为 load.php 的文件,它将获取 url 并将其指向视图文件夹中的正确文件...

<?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 {
             echo $this->file;
                die ('404 Not Found');
        }
    }

}

在视图文件夹中,我有 2 个文件,一个 index.php 和一个 test.php ...

这是我的 bootstrap/index.php 文件,它位于根文件夹中,并将所有内容绑定在一起......

<?php
/* index.php
 */

require_once 'model/load.php';
require_once 'controller/main.php';

new mainController();
4

2 回答 2

1

试试这个

$url = explode('/', trim($url['path'], '/'));

和 $this->urlValues['controller'] == 'test.php' 用于请求 localhost/mvc-framework/test.php

于 2013-11-14T18:02:57.963 回答
0

由于 .htaccess 文件,您总是会得到 index.php,该文件总是将请求重定向到前端控制器 index.php。我想...

于 2013-11-14T17:46:33.080 回答