В этом разделе рассмотрим как создать новую страницу с надписью "Привет" в вашем приложении.
Чтобы достигнуть этой цели, вы создадите [действие (action)](structure-controllers.md), а также [представление (view)](structure-views.md):
В этом разделе рассмотрим как создать новую страницу с надписью «Привет». В процессе решения задачи вы создадите
[действие контроллера](structure-controllers.md) и [представление](structure-views.md):
* Приложение обработает запрос страницы и передаст управление соответствующему действию;
* Приложение обработает запрос и передаст управление соответствующему действию;
* Действие, в свою очередь, отобразит представление с надписью "Привет" конечному пользователю.
С помощью данного руководства вы изучите
* Как создавать [действие](structure-controllers.md), чтобы отвечать на запросы;
* Как создавать [представление](structure-views.md), чтобы компоновать содержимое ответа;
* Как создавать [представление](structure-views.md), чтобы формировать содержимое ответа;
* Как приложение отсылает запросы к [действию](structure-controllers.md).
Создание Действия <a name="creating-action"></a>
------------------
------------------------------------------------
Для "Привет"-приложения вы создадите `say`[действие](structure-controllers.md), которое читает параметр `message` из запроса и отображает его же пользователю.
Если в запросе не содержится параметра `message`, то действие будет отображать "Привет" по умолчанию.
Для нашей задачи потребуется [действие](structure-controllers.md)`say`, которое читает параметр `message` из
запроса и отображает его значение пользователю. Если в запросе не содержится параметра `message`, то действие будет
выводить «Привет».
> Информация: [Действия](structure-controllers.md) являются объектами (не путать с базовым понятием ООП - прим. пер.), непосредственно с которыми конечные пользователи взаимодействуют.
Действия сгруппированы с помощью [контроллеров](structure-controllers.md). Результатом выполнения действия является ответ, который конечный пользователь в итоге получает.
> Информация: [Действия](structure-controllers.md) могут быть запущены непосредственно пользователем и сгруппированы в
[контроллеры](structure-controllers.md). Результатом выполнения действия является ответ, который получает пользователь.
Действия должны быть объявлены в [контроллерах](structure-controllers.md). Для простоты, вы можете объявить действие `say` в существующем контроллере `SiteController`, который определен
в файле класса `controllers/SiteController.php`:
Действия объявляются в [контроллерах](structure-controllers.md). Для простоты, вы можете объявить действие
`say` в уже существующем контроллере `SiteController`, который определен в файле класса `controllers/SiteController.php`:
```php
<?php
...
...
@@ -45,25 +46,27 @@ class SiteController extends Controller
```
В приведенном коде действие `say` объявлено как метод `actionSay` в классе `SiteController`.
Yii использует префикс `action`, чтобы различать методы-действия и методы, которые не являются таковыми в классе контроллера.
Название после префикса `action`считается идентификатором соответствующего действия.
Yii использует префикс `action` чтобы различать методы-действия и обычные методы. Название после префикса `action`
считается идентификатором соответствующего действия.
> Информация: Идентификаторы действий обозначаются в нижнем регистре. Если идентификатор имеет несколько слов, то они должны быть соединены дефисами, например, `create-comment`.
Имена методов действий получаются путем удаления дефисов из идентификатора, преобразования первой буквы каждого слова в верхний регистр и добавления префикса `action`.
Например, идентификатор действия `create-comment` соответствует действию с именем метода `actionCreateComment`.
> Информация: Идентификаторы действий задаются в нижнем регистре. Если идентификатор состоит из нескольких слов, они
соединяются дефисами, то есть `create-comment`. Имена методов действий получаются путём удаления дефисов
из идентификатора, преобразования первой буквы каждого слова в верхний регистр и добавления префикса `action`.
Например, идентификатор действия `create-comment` соответствует методу `actionCreateComment`.
Метод действия получает параметр `$message`, который по умолчанию равен `"Привет"`. Когда приложение получает запрос и определяет, что действие `say` ответственно за обработку запрос,
приложение извлекает параметр с таким же именем из запроса.
Метод действия принимает параметр `$message`, который по умолчанию равен `"Привет"`. Когда приложение получает запрос
и определяет, что действие `say` ответственно за его обработку, параметр заполняется одноимённым значением из запроса.
Внутри метода действия вызывается [[yii\web\Controller::render()|render()]], чтобы отобразить [представление](structure-views.md)
с именем `say`. Параметр `message` также передается в представление, чтобы отобразить на странице. Результат возвращается методом действия, который будет взят приложением и отображен конечному пользователю.
Внутри метода действия, для вывода отображения [представления](structure-views.md) с именем `say`, используется метод
[[yii\web\Controller::render()|render()]]. Для того, чтобы вывести сообщение, в отображение передаётся параметр `message`.
Результат отображения при помощи `return` передаётся приложению, которое отдаёт его пользователю.
Создание Представления <a name="creating-view"></a>
---------------
Создание представления <a name="creating-view"></a>
Параметр `r` требует больше объяснений. Он связан с [маршрутом (route)](runtime-routing.md), который представляет собой уникальный идентификатор, указывающий на действие.
Его формат `ControllerID/ActionID`. Когда приложение получает запрос, оно проверяет параметр `r` и, используя часть `ControllerID`, определяет какой контроллер следует инициализировать, чтобы обработать запрос.
Затем, контроллер использует часть `ActionID`, чтобы определить какое действие должно использоваться для выполнения реальных операций. В нашем случае маршрут `site/say` будет разрешен в контроллер `SiteController` и
действие `say`. В результате, метод `SiteController::actionSay()` будет вызван, чтобы обработать запрос.
Параметр `r` требует дополнительных пояснений. Он связан с [маршрутом (route)](runtime-routing.md), который представляет
собой уникальный идентификатор, указывающий на действие. Его формат `ControllerID/ActionID`. Когда приложение получает
запрос, оно проверяет параметр `r` и, используя `ControllerID`, определяет какой контроллер следует использовать для
обработки запроса. Затем, контроллер использует часть `ActionID`, чтобы определить какое действие выполняет реальную работу.
В нашем случае маршрут `site/say` будет соответствовать контроллеру `SiteController` и его действию `say`.
В результате, для обработки запроса будет вызван метод `SiteController::actionSay()`.
> Информация: Как и действия, контроллеры тоже имеют идентификаторы, которые однозначно определяют их в приложении.
Идентификаторы контроллеров используют те же правила именования, что и идентификаторы действий. Имена классов контроллеров получаются путем удаления дефисов из идентификатора, преобразования первой буквы каждого слова в
верхний регистр и добавления слова `Controller` в конец. Например, идентификатор контроллера `post-comment` соответствует имени класса контроллера `PostCommentController`.
> Информация: Как и действия, контроллеры также имеют идентификаторы, которые однозначно определяют их в приложении.
Идентификаторы контроллеров используют те же правила именования, что и идентификаторы действий. Имена классов
контроллеров получаются путём удаления дефисов из идентификатора, преобразования первой буквы каждого слова в
верхний регистр и добавления в конец `Controller`. Например, идентификатор контроллера `post-comment` соответствует
имени класса контроллера `PostCommentController`.
Резюме <a name="summary"></a>
-------
-----------------------------
В этом разделе вы коснулись тем контроллеров и представлений в паттерне MVC.
Вы создали действие как часть контроллера, чтобы обрабатывать запросы. Также, вы создали представление, чтобы составлять содержимое ответа.
В этом процессе никак не была задействована модель, так как в качестве данных выступает лишь простой параметр `message`.
В этом разделе вы затронули тему контроллеров и представлений в паттерне MVC. Вы создали действие как часть контроллера,
обрабатывающего запросы, и представление, участвующее в формировании ответа. В этом процессе никак не была задействована
модель, так как в качестве данных выступает лишь простой параметр `message`.
Вы также изучили концепцию маршрутизации, которая является связующим звеном между пользовательским запросом и действиями контроллеров.
Также вы познакомились с концепцией маршрутизации, которая является связующим звеном между запросом пользователя и
действием контроллера.
В следующем разделе вы узнаете как создавать модели и добавлять новые страницы с HTML формами.
В следующем разделе вы ознакомитесь с тем, как создавать модели и добавлять новые страницы с HTML формами.