Я понимаю, что это очень общий вопрос, но я думаю, что я действительно не ищу окончательного ответа. Будучи новичком в PHP-фреймворках, я с трудом обнимаю его.
Рамки Javascript, особенно с расширениями пользовательского интерфейса, похоже, имеют своего рода MVC-подобный подход, отделяя ваш JS-код от вашего дизайна. Просто кажется, что было бы запутать использование дополнительной структуры MVC на бэкэнд.
Это обычно делается для приложений, ориентированных на AJAX? Есть ли общепринятый способ?
Быстрый пример того, как он может сочетаться для приложения Zend Framework (и это из демонстрационного приложения, которое я написал несколько месяцев назад):
В конце концов, PHP-приложение знает, что для запроса AJAX необходим ответ AJAX (меньше пропускной способности, меньше обработки, только фрагмент JSON или HTML), но для обычного запроса требуется полная страница.
В принципе, вы просто используете AJAX для запроса (или обновления или добавления данных) шаблона 'view', без необходимости обрабатывать весь макет. Помощник действия контекста контекста Zend Framework может помочь в этом иметь больше смысла.
Стоит отметить, что переключение контекста хорошо работает, делая запрос доступным в разных форматах – HTML / XML, CSV и т. Д.
На мой взгляд, это следующий логический шаг от MVC. Вы уже отделите свой доступ к данным (модель), от бизнес-логики (контроллера), от вывода (просмотра) – теперь вы просто отделяете поведение от разметки.
По моему опыту, он отлично работает с функциями AJAX, так как вам нужно только изменить свой вид, чтобы вернуть необходимую информацию в виде JSON или XML.
Это очень хорошая идея, поскольку фреймворки PHP MVC связаны с фреймворками JS :
обновленная ссылка, спасибо «Исключение e».
Лично мы используем Zend (MVC, а также другие аспекты структуры Zend) с jquery, и он отлично работает вместе. Поскольку не все ваше взаимодействие с html-страницей будет через jquery (ajax), тогда рекомендуется стандартная архитектура MVC. Вы, конечно же, хотите, чтобы слои вашей архитектуры (разделяющие модель и представление) имели jquery (по крайней мере, для меня) и дополнительную «функцию», позволяющую выполнять ваш MVC асинхронно.
Просто кажется, что было бы запутать использование дополнительной структуры MVC на бэкэнд.
Не нужно беспокоиться об этом. Вы можете использовать zend framework и extjs, например, независимо при разработке, они действительно являются отдельными продуктами. Зависимости между этими слоями должны быть простыми . Не нужно волноваться.
Связь низкая, вам нужно только настроить средства для запроса данных из вашего сервера-приложения и делать все, что вы хотите, с клиентской стороны. Линия между этими системами проста и не будет вас путать.
Extjs действительно не имеет структуры mvc imho. Он предлагает предопределенные богатые компоненты. Вы склеиваете эти компоненты с некоторой конфигурацией и настраиваете URL-адреса своего сервера, откуда могут извлекаться данные.
Как вы получите ответ zend mvc на ajax? Я рекомендую вам ознакомиться с презентацией о zf ↔ ajax из руководства проекта zf.