Взгляните на этот модуль Zend Framwork 2.
Если у вас нет приложения, вы можете использовать Скелет Wasabilib https://github.com/WasabiLib/wasabilib_zf2_skeleton_application. Он поставляется со всеми необходимыми ресурсами в нужном месте.
Если у вас уже есть приложение, вам следует только клонировать модуль, а не полный скелет.
Минимальные требования: jQuery, ZF2
- Добавьте модуль в application.config.php.
- Включите wasabilib.min.js после jquery в заголовок вашего layout.phtml
Как это работает
в вашем .phtml-файле у вас есть такая форма:
<form id="simpleForm" class="ajax_element" action="simpleFormExample" method="POST">
<input type="text" name="written_text">
<input type="submit" value="try it">
</form>
В любом месте вашего phtml вы можете разместить элемент, где отображается ответ.
В вашем контроллере используется следующий метод:
public function simpleFormExampleAction(){
$postArray = $this->getRequest()->getPost();
$input = $postArray['written_text'];
$response = new Response(new InnerHtml("#element_simple_form","Server Response: ".$input));
return $this->getResponse()->setContent($response);
}
Форма имеет класс "ajax_element", который будет сообщать библиотеке, что запрос будет выполнен с xmlhttp-запросом. Это не сработает, если вы не дадите идентификатор запрашивающему элементу . Таким образом, форма имеет идентификатор "simpleForm". Действие - это «путь / к / контроллеру», как обычный запрос.
В действии контроллера создается новый объект WasabiLib \ Ajax \ Response.
Класс InnerHtml предназначен для замены, добавления и добавления HTML или обычного текста к селектору.
В этом случае селектор является идентификатором "element_simple_form". Первым параметром класса InnerHtml является селектор. Убедитесь, что вы пишете #yourElementId или .yourClassSelector . Для идентификаторов "#" и для селекторов классов "."
Второй параметр - это текст, который вы хотите заполнить этим элементом.
Объект ответа может обрабатывать намного больше ответов, которые вы можете добавить с помощью
$response->add($anotherResponseType);
Список возможных типов ответов приведен на его домашней странице wasabilib.org
Модуль построен для простой обработки ответов на ajax-запросы. Как только вы поняли поведение, вы можете справиться практически со всеми практическими задачами Ajax.