A free and open-source book on ZF3 for beginners


7.6. Формы и шаблон «модель-представление-контроллер»

В предыдущем разделе мы рассмотрели очень простой случая использования формы: мы подготовили шаблон представления с HTML-разметкой формы и действие контроллера, ответственное за отображение формы и вывода на экран необработанных введенных пользователем данных. Однако, использование необработанных данных в реальных приложениях имеет недостаток: мы не проверяем отправленные пользователем данные на возможные ошибки и/или вредоносный код. Ниже мы обсудим, как выполнять подобную валидацию.

При разработке сайта на базе ZF3, который использует шаблон «модель-представление-контроллер», (Model-View-Controller или MVC) функциональность формы обычно разделена на модели форм, ответственные за определение полей, фильтарацию и валидацию; и представление формы, которые обычно реализуется с помощью специальных помощников видов.

Набор функций для создания моделей форм, добавления правил валидации и использования помощников видов схематически показан на рисунке 7.8. Как видите из рисунка, за основу взят набор функций стандартных HTML-форм.

Рисунок 7.8. Функциональность форм в ZF3 Рисунок 7.8. Функциональность форм в ZF3

У подхода MVC к работе с формами есть следующие преимущества:

7.6.1. Типичный процесс использования формы

Так, вы инстанцируете модель формы в методе действия контроллера, затем извлекаете отправленные пользователем данные из PHP-переменных и передаете их модели формы для валидации. Помощники видов форм используются в шаблоне представления для генерации HTML-разметки формы. Этот процесс изображен на рисунке 7.9.

Figure 7.9. Работа с формой в MVC-приложении Figure 7.9. Работа с формой в MVC-приложении

Стрелки на рисунке 7.9 обозначают направления действий:

  1. Первым делом внутри метода действия контроллера вы извлекаете данные, отправленные пользователем, из PHP-переменных GET и POST (и возможно других). Затем вы создаете экземпляр модели формы и передаете ему отправленные пользователем данные. Работа модели формы заключается в проверке (валидации) данных на корректность, и, если что-то не так, создать сообщение (или сообщения) об ошибке для каждого недопустимого поля формы.

  2. Затем вы передаете модель формы шаблону представления .phtml для визуализации (с помощью контейнера для переменных ViewModel). Шаблон представления затем сможет обращаться к модели формы и вызывать ее методы.

  3. После этого шаблон представления использует модель формы и помощники видов, предоставляемые Zend Framework 3 для визуализации полей (и отображения возможных сообщений об ошибках валидации, созданных на этапе валидации). В результате создается HTML-разметка формы.

В последующих разделах мы обсудим эти шаги более детально.


Top