Как правильно организовать ajax запросы в MVC архитектуре?
Вопрос абсолютно не логичен, не понятен про что вообще и как они могут быть взаимосвязанными.
Будь то:
- MVC - Model View Controller (Модель-Вид-Контроллер)
- Page Controller (Контроллер страницы)
- Front Controller (Контроллер входа / Единая точка входа)
- Application Controller (Контроллер приложения)
- Two Step View (Двухшаговая шаблонизация)
да и вообще любой паттерн веб-представления,
он не как не связан с AJAX или другим видом передачи данных.
Не буду вдаваться в подробности реализации, кажется вопрос в том, как организовать пространство имен "namespace".
Первое что нужно сделать, определится о каком Application Program Interface (API) мы будем говорить.
Предлагаю для упрощения говорить далее о
REST.
Представим что у нас есть некий
DTO (Data Transfer Object) Product - который необходимо серелизовать и передать по сети.
Вот примеры простейших запросов REST:
Корневые (независимые) сущности API:
GET /products — получить все продукты.
GET /products/123 — получить информацию по продукту с ID 123.
GET /categories - получить все категории.
Зависимые (от корневой) сущности:
GET /products/555/variants — все варинты продукта с ID 555.
GET /products/555/variants/456/specifications — получить спецификацию варианта 456 продукта 555
Ух.. уже страшно.
И так, коль вопрос про организацию пространства для REST, то как вариант можно рассмотреть следующие.
App\......\Controllers\AbstractController.php - Абстрактрый класс контроллеров.
App\......\Controllers\Product\ProductController.php - отвечает за продукт
App\......\Controllers\Product\VariantController.php - отвечает за варианты продукта
App\......\Controllers\Product\SpecificationController.php - отвечает за спецификацию варианта продукта
Или же работу с каждым объектом сайта вынести в отдельный контроллер?
Каждый из контроллеров отвечает за свою сущность и имеет свой набор CRUD методов.