我已经构建了一个基本的MVC字体控制器应用程序。它的构建目的是为了便于网站编辑,索引。 php是每个js和css文件加载的唯一页面,然后前端控制器将适当的内容文件转发并将其放入指定的div中,并且可以通过将?pagename
添加到网址的结尾(例如: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);
}
}
}
任何建议都会很棒!谢谢!
答案 0 :(得分: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输出,您可能需要在回显视图内容之前发送正确的内容类型标题。以肮脏和快速的方式添加一些东西来处理内容类型和部分视图,你就完成了。