2013-11-19 5 views
-1

Я создаю крошечную структуру MVC для обучения.Ошибка обработки ошибок URL-адреса MVC

У меня есть файл и класс под названием load, который находится в папке с моей моделью. Он считывает запрошенное имя файла и проверяет, находится ли файл в папке views и возвращает правильный файл. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь обработать неправильные URL-адреса, чтобы, если запрашиваемый файл/URL не возбуждает вас, вы направляетесь на страницу index.php в папке представлений ...

У меня есть инструкция if внутри функции, которая проверяет, существует ли файл, и я думал, что могу просто написать инструкцию else, требующую файла index.php, если файл не найден ... Но это не работает. Все, что я получаю, это белая пустая страница, когда я печатаю на несуществующей странице, даже если я попытаюсь что-то повторить в заявлении else ...

Кто-нибудь знает, чего не хватает или что я делаю неправильно?

UPDATE: Добавлено 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

Пустая белая страница обычно означает, что вы не включили отчет об ошибках (или по крайней мере не отображали их), и что-то пошло не так. Включить отчет об ошибках. 'ini_set ('display_errors', true); error_reporting (-1); ' – naththedeveloper

+0

Привет! Спасибо за ваш комментарий! Раньше у меня не было проблем с обработкой ошибок. Белая пустая страница показывает только, когда я запрашиваю страницу, которая не существует ... Я попытался вставить код ошибки в свой файл начальной загрузки/индекса, но он все еще является пустой страницей ... @FDL – Lisa

+0

Если вы все еще получаете белый экран журнала ошибок может быть полезен. В linux это обычно находится в папке/var/log или на mac в папке вашего дистрибутива LAMP. –

ответ

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']); 
    }   
} 
+0

Спасибо, я понимаю, что вы имеете в виду! Это действительно помогло! – Lisa

+0

Мне тогда даже не нужны ifs? Класс становится очень длинным, если в папке представлений есть много страниц, если я должен добавить ifs для всех ... Этот способ намного лучше! – Lisa

Смежные вопросы