0

我已经构建了一个基本的 MVC 字体控制器应用程序。它建立的目的是为了方便网站编辑、索引。php是每个js、css文档加载的唯一页面,然后前端控制器将相应的内容文件向前带入指定的div内,添加?pagename到url末尾即可调用正确的文档(例如:) site.com/index.php?about-us。它运行良好,没有 PHP 错误,但是我现在正在尝试在站点中构建一个音频播放器,并希望它在页面之间保持不变,所以我试图编辑这个 mvc 代码以使用 ajax,这样页面就不会重新加载改变内容。下面是我的页面代码。

index.php code snippet

<div id="mpane-in">
    <?php

       /** Display errors in production mode Only DO NOT un-comment unless testing **/
       //ini_set('display_errors', 1);

       // Load the routing controller
       require 'application/router.php';
    ?>
</div>

/application/router.php

  require 'load.php';
  require 'model.php';

  require 'controller.php';
  new Controller(); 

load.php

class Load {
  function view( $file_name, $data = null ) 
    {
      if( is_array($data) ) {
         extract($data);
    }
    include 'pages/' . $file_name;
  }
}

model.php

class Model {
   public function user_info()
   {
      // simulates real data
      return array(
         'first' => 'Target',
         'last'  => 'Not_Loaded'
      );
   }
}

controller.php

 class Controller {
   public $load;
   public $model;

   function __construct()
   {
      $this->load = new Load();
      $this->model = new Model();

      // determine what page you're on
      $this->home();
   }

   function home()
   {
       if ($_SERVER['QUERY_STRING'] === ""){
        $data = $this->model->user_info();
        $this->load->view('main.php' , $data);
       }
       else {
        $data = $this->model->user_info();
        $this->load->view($_SERVER['QUERY_STRING'] . '.php' , $data);
       }
   }
}

任何建议都会很棒!谢谢!

4

1 回答 1

1

以一种过于简单的方式,您可以使用现有代码而无需更改任何内容。G

 class Controller {
  .....

  //call this ajax function 
  function ajaxLogin(){
       $this->load->partialView($_SERVER['QUERY_STRING'] . '.php' , $data);
  }
}

您只需要使用部分视图来避免加载 <html><header></body>,在 text/html 响应以及 json 和 xml 输出的情况下,您可能需要在回显视图内容之前发送正确的内容类型标头。以一种肮脏而快速的方式添加一些东西来处理内容类型和部分视图,你就完成了。

于 2013-08-26T04:35:00.473 回答