Я нахожусь в процессе изучения шаблона MVC и создания собственного облегченного шаблона на PHP
Ниже приведен базовый пример того, что у меня есть сейчас.
Я немного запутался в том, как мне следует обрабатывать запросы / ответы AJAX.
В моем примере пользовательского контроллера ниже, если бы я перешел к www.domain.com/user/friends/page-14
в браузере, он создал бы User object
и вызвал бы friends method
этого объекта
friends method
затем получит данные, необходимые для части содержимого моей страницы.
Мое приложение загрузит файл шаблона с верхним / нижним колонтитулом и вставит содержимое объекта выше в середину страницы.
Теперь вот где я запутался, если запрос сделан с использованием AJAX, тогда он вызовет страницу, которая выполнит процесс, включая загрузку файла шаблона.Если сделан AJAX-вызов, я думаю, что он должен каким-то образом просто вернуть часть тела / контента для моей страницы, а не создавать заголовок / нижний колонтитул.
Так что в моем MVC, где я должен собрать / загрузить этот шаблонфайл, который будет иметь содержимое верхнего / нижнего колонтитула?И где я должен определить, сделан ли запрос AJAX, чтобы я мог избежать загрузки шаблона?
Надеюсь, у меня есть смысл, мне действительно нужна помощь в выяснении, как это сделать в моем MVC, который я строю.Если вы можете помочь, пожалуйста, используйте пример кода
/**
* 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);
}
}