Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Разработка на Yii2: Исследование MVC, Форм и Шаблонов (Layouts)

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Getting Started
How to Program With Yii2: Working With the Database and Active Record

Russian (Pусский) translation by Anna Goorikova (you can also view the original English article)

Final product image
What You'll Be Creating

В Разработка на Yii2: Начало, мы установили Yii2 локально, построили приложение "Привет, Мир", установили удаленный сервер, и использовали Github для развертки нашего кода. Этот урок объяснит некоторые базовые понятия в Yii, связанные с реализацией MVC фреймворка: Модели, Виды и Контроллеры. Также мы изучим шаблоны и кастомизацию навигационного меню и Bootstrap элементы.

Для этих примеров мы представим, что создаем интерфейс для публикации простых обновлений статуса, например, наш собственный мини-Twitter. Однако, мы не будем заходить так далеко, чтобы хранить данные в базе данных. Я оставлю это для следующего урока, в котором будут рассмотрены возможности Yii под названием Gii.

Gii автоматизирует и упростит все, что мы сделаем в этом руководстве, но важно проработать основные понятия и выполнить эти задачи вручную хотя бы один раз.

Модели

Что такое модель? Википедия говорит: "Модель уведомляет связанные с ней представления и контроллеры, когда произошли изменения в ее состоянии. Это уведомление позволяет представлениям создавать обновленный вывод, а контроллерам - изменять доступный набор команд".

Для меня модели часто представляют собой концепции того, что я строю во "внешнем" мире. Итак, если мы думаем о обновлениях статуса, модель Status будет содержать все свойства обновления статуса и всех функций или методов, связанных с запросом или изменением статуса или статусов.

Лучшая практика заключается в том, чтобы создавать как можно больше функциональности и возможностей в своих моделях. В практике MVC вы создаете модели "тяжелые" и контроллеры и представления легкие. Yii предоставляет отличные возможности, которые относятся к тем вещам, которые вы делаете в веб-разработке и разработке приложений, которые упрощают создание моделей, особенно когда речь идет о формах и базах данных; большую часть этого мы рассмотрим в последующих уроках.

Давайте создадим нашу модель Status. Для наших примеров кодирования вы можете использовать репозиторий Git. Я основываюсь на том, что мы создали в учебном руководстве «Начало работы», - я отметил его здесь для справки. Здесь находится репозиторий Github для завершенного руководства.

Мы создадим Status.php в /hello/models/Status.php. Чтобы вывести сообщение о статусе, нам нужно собрать текст сообщения от пользователя. Мы также создадим поле привилегий для публикации публично или конфиденциально.

Обратите внимание на функцию правил (rules) - она используется для Yii валидации формы, чтобы пользователи вводили соответствующую информацию в каждое поле. Yii использует JavaScript для проверки форм во время ввода данных пользователем.

Созданная мною функция getPermissions() будет использоваться для элементов раскрывающегося списка формы.

Теперь давайте перейдем к созданию контроллера, чтобы позволить пользователю создавать и просматривать текстовые обновления.

Контроллеры

Что такое контроллер? Википедия говорит: "Контроллер может отправлять команды модели для обновления состояния модели (например, редактирования документа). Он также может отправлять команды в связанное с ним представление, чтобы изменить вывод представления модели." В типичном веб-приложении Yii URL-адрес к странице вызывает контроллер для загрузки данных для страницы с использованием модели и отображения страницы с использованием представления.

Лучше всего логически группировать связанные функции внутри одного контроллера. Различные методы контроллера, называемые действиями (actions), реализуют каждую функцию. Они часто соответствуют конкретным страницам. Например, http://localhost:8888/hello/web/status/create вызовет действие create контроллера StatusController, которое мы собираемся создать.

По мере разработки функций, связанных с Status, вы должны сгруппировать эти функции в пределах одного StatusController.php. На данный момент мы просто создадим функцию create.

В /hello/controller/ создайте StatusController.php:

Для создания формы требуется загрузка данных модели, разделение в зависимости от того, являются ли они частью операции POST или нет. Если нет, отображается пустая форма. Если были получены передаваемые данные, они проверяются и обрабатываются. В нашем случае это означает, что вы должны вывести файл представления.

Представления

Что такое представление? Википедия говорит: "Представление запрашивает информацию из модели, которую оно использует для генерации вывода пользователю". В Yii представление использует PHP-подобный язык шаблонов для отображения вывода страницы в HTML, используя данные, загруженные моделью и доставленные с контроллера.

Представления обычно расположены в одной папке, связанной с соответствующим контроллером, например, представления StatusController находятся в папке views/status.

В Yii код формы обычно включается в то, что называется частичным представлением. Эти файлы часто называются с префиксом подчеркивания. Они предназначены для включения в другие представления. Это позволяет повторно использовать код формы на страницах создания и обновления.

Сначала мы создадим представление Create, которое отображает форму. Затем мы также создадим View представление, чтобы показать нам обновление статуса, которое мы публикуем. В предстоящих уроках, когда мы будем работать с реальной базой данных, сохранять и извлекать данные, это будет работать по-другому.

Вот простой пример нашего /hello/views/status.view.php файла для вывода опубликованных данных:

Обратите внимание, что файл представления представляет собой сочетание HTML и PHP. Когда контроллер получает опубликованные данные, он отображает приведенное выше представление, показывая, какие данные пользователь отправил.

Но теперь поговорим о формах и создадим файл представления с формой добавления.

Формы

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

Yii2 ActiveForm Blank

Вот пример формы для создания обновления статуса:

Виджет Yii2 ActiveForm используется для генерации HTML для наших полей ввода. Обратите внимание, как раскрывающийся список вызывает метод getPermissions модели Status.

Yii2 ActiveForm Create

Нажатие кнопки «Отправить» возвращает действие Создание контроллера StatusController. Когда передаваемые данные получены, он выводит файл view.php вместо файла формы create.php.

Вот как выглядит файл представления при выводе с помощью view.php:

Yii2 Status View

Затем давайте обновим глобальную навигационную панель, чтобы включить ссылки на форму создания статуса.

Шаблоны

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

Если вы посмотрите на \hello\views\layouts\main.php, вы увидите структуру внешнего макета:

Представления в основном представляют собой внутреннюю страницу веб-сайта, которая находится между хедером и навигационной панелью и началом футера. Они отображаются, когда макет выводит $content:

Yii позволяет создавать несколько макетов для каждого приложения, хотя это не всегда необходимо. Это зависит от вашего приложения. Контроллеры предлагают макет по умолчанию, и вы можете переопределить его для любого заданного действия. Если ваши контроллеры логически группируют связанные действия, вполне вероятно, что пользовательский интерфейс будет использовать один и тот же макет для всех действий в контроллере.

Теперь давайте обновим навигационную панель, чтобы включить меню Status с действием Создать. Поскольку Yii2 использует Bootstrap для своих шаблонов и стилей, нам просто нужно сказать ему создать раскрывающийся список Bootstrap.

Обновите Nav::widget, чтобы иметь вложенный массив:

Вот что вы должны увидеть:

Yii2 NavBar and Drop Down Menu

Что дальше?

Теперь, когда вы немного знаете о том, как работает MVC-архитектура Yii, включая модели, представления, контроллеры, формы и шаблоны, мы создадим базу данных для статусов и используем Yii генератор кода Gii для создания всего этого автоматически. События начнут двигаться немного быстрее.

Если вы хотите узнать, когда выйдет следующий урок по Yii2, следуйте за мной @reifman в Twitter или проверьте мою страницу инструкторов Tuts+. Моя страница инструктора будет включать все статьи из этой серии, как только они будут опубликованы.

Ссылки по теме

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.