【发布时间】:2011-09-07 21:37:46
【问题描述】:
我正在学习 MVC 模式并在 PHP 中构建自己的轻量级模式
以下是我现在拥有的基本示例。
我对如何处理 AJAX 请求/响应有点困惑。
在下面的示例用户控制器中,如果我在浏览器中访问www.domain.com/user/friends/page-14,它将创建一个User object 并调用该对象的friends method
friends method 然后会获取我页面内容部分所需的数据。
我的应用会加载一个带有页眉/页脚的模板文件,并将上面对象的内容插入页面中间。
现在这是我感到困惑的地方,如果使用 AJAX 发出请求,那么它将调用一个页面来完成该过程,包括加载模板文件。如果进行了 AJAX 调用,我认为它应该以某种方式返回我的页面的正文/内容部分,而不是构建页眉/页脚的内容。
那么在我的 MVC 中,我应该在哪里构建/加载这个包含页眉/页脚内容的模板文件?我应该在哪里检测是否发出了 AJAX 请求,这样我就可以避免加载模板?
我希望我说得通,我真的需要帮助来弄清楚如何在我正在构建的 MVC 中执行此操作。 IU如果你能帮忙,请使用一些示例代码
/**
* Extend this class with your Controllers
* Reference to the model wrapper / loader functions via $this->model
* Reference to the view functions via $this->view
*/
abstract class Core_Controller {
protected $view;
protected $model;
function __construct(DependencyContainer $dependencyContainer){
$this->view = new Core_View();
//$this->view = $dependencyContainer->get(view);
}
public function load($model){
//load model
//this part under construction and un-tested
$this->$model = new $model;
}
}
用户控制器
/**
* Example Controller
*/
class User_Controller extends Core_Controller {
// domain.com/user/id-53463463
function profile($userId)
{
//GET data from a Model
$profileData = $this->model->getProfile($userId);
$this->view->load('userProfile', $profileData);
}
// domain.com/user/friends/page-14
function friends()
{
//GET data from a Model
$friendsData = $this->model->getFriends();
$this->view->load('userFriends', $friendsData);
}
}
【问题讨论】: