Лучший способ структурировать AJAX для приложения Zend Framework - PullRequest
5 голосов
/ 28 мая 2010

Я думал о наличии сервисного уровня модуля AJAX с контроллерами и действиями, которые взаимодействуют с моей моделью. Легко, но не очень расширяемо и будет нарушать СУХОЙ. Если я изменю логистику какого-либо процесса, мне придется редактировать контроллеры AJAX и обычные контроллеры.

Так что в идеале я бы загружал одинаковые действия как для пользователей javascript, так и для других пользователей. Я думал о том, чтобы проверить $_POST['ajax'], если он установлен, я бы загрузил другое (json'y) представление для данных. Интересно, как / хороший способ сделать это (плагин фронт-контроллера, который я представляю?) Или кто-то может указать мне на учебник UP TO DATE, который описывает действительно хороший способ для создания более крупного приложения ajax.

Ответы [ 2 ]

5 голосов
/ 28 мая 2010

Вы можете фактически использовать объект запроса, чтобы определить, произошел ли запрос через ajax, например ::

.
// from your controller
if($this->getRequest()->isXmlHttpRequest()) {
    // an ajax request, do something special (e.g. render partial view)
} else {
   // render entire view
}

Это в основном тестирование заголовка x-requested-with (которого нет всегда в зависимости от библиотеки JS и т. Д.). Смотрите (под заголовком «Обнаружение запросов AJAX»):

http://framework.zend.com/manual/en/zend.controller.request.html

1 голос
/ 28 мая 2010

Вы можете проверить заголовки XmlHttpRequest. Однако не все библиотеки Javascript делают это, и даже те, которые не обязательно делают это во всех браузерах.

Существует также AjaxContext , который в основном проверяет переменную запроса "context", аналогичную вашей идее $ _POST ['ajax'].

То, что я фактически закончил, было похоже на ваше первоначальное предложение. Я создал модуль AJAX. Чтобы предотвратить тонны дублирования кода контроллера, я создал сервисный уровень, который обрабатывает все операции на моделях, поэтому мои контроллеры действительно отвечают только за преобразование входных запросов и отображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...