@@ -56,13 +56,13 @@ class PostController extends Controller
...
@@ -56,13 +56,13 @@ class PostController extends Controller
под названием `view`. В противном случае будет брошено исключение.
под названием `view`. В противном случае будет брошено исключение.
В действии `create` (определенном методом `actionCreate()`), код аналогичен. Он сначала пытается загрузить [модель](structure-models.md)
В действии `create` (определенном методом `actionCreate()`), код аналогичен. Он сначала пытается загрузить [модель](structure-models.md)
с помощью данных из запроса и сохранить модель. Если все прошло успешно, то код перенаправляет барузер на действие `view` с ID только
с помощью данных из запроса и сохранить модель. Если все прошло успешно, то код перенаправляет браузер на действие `view` с ID только
что созданной модели. В противном случае он отобразит представление `create`, через которое пользователь может заполнить нужные данные.
что созданной модели. В противном случае он отобразит представление `create`, через которое пользователь может заполнить нужные данные.
## Маршруты <a name="routes"></a>
## Маршруты <a name="routes"></a>
Конечные пользователи обращаются к действиям через так называемые *маршурты*. Маршрут это строка, состоящая из следующих частей:
Конечные пользователи обращаются к действиям через так называемые *маршруты*. Маршрут это строка, состоящая из следующих частей:
* ID модуля: он существует, только если контроллер принадлежит не приложению, а [модулю](structure-modules.md);
* ID модуля: он существует, только если контроллер принадлежит не приложению, а [модулю](structure-modules.md);
* ID контроллера: строка, которая уникально идентифицирует контроллер среди всех других контроллеров одного и того же приложения
* ID контроллера: строка, которая уникально идентифицирует контроллер среди всех других контроллеров одного и того же приложения
...
@@ -105,7 +105,7 @@ class SiteController extends Controller
...
@@ -105,7 +105,7 @@ class SiteController extends Controller
### ID контроллеров <a name="controller-ids"></a>
### ID контроллеров <a name="controller-ids"></a>
Обычно контроллер сделан таким образом, что он должен обрабатывать запросы, связанные с определенным ресурсом.
Обычно контроллер сделан таким образом, что он должен обрабатывать запросы, связанные с определенным ресурсом.
Именно по этим причинам, ID контроллеров обычно являются существительные, ссылающиеся на ресурс, который они обрабывают.
Именно по этим причинам, ID контроллеров обычно являются существительные, ссылающиеся на ресурс, который они обрабатывают.
Например, вы можете использовать `article` в качестве ID контроллера, которые отвечает за обработку данных статей.
Например, вы можете использовать `article` в качестве ID контроллера, которые отвечает за обработку данных статей.
По-умолчанию, ID контроллеров должны содержать только следующие символы: Английские буквы в нижнем регистре, цифры, подчеркивания,
По-умолчанию, ID контроллеров должны содержать только следующие символы: Английские буквы в нижнем регистре, цифры, подчеркивания,
...
@@ -114,7 +114,7 @@ class SiteController extends Controller
...
@@ -114,7 +114,7 @@ class SiteController extends Controller
ID контроллеров также могут содержать префикс подпапки. Например, в `admin/article` часть `article` является контроллером в
ID контроллеров также могут содержать префикс подпапки. Например, в `admin/article` часть `article` является контроллером в
подпапке `admin` в [[yii\base\Application::controllerNamespace|пространстве имен контроллеров]].
подпапке `admin` в [[yii\base\Application::controllerNamespace|пространстве имен контроллеров]].
Допустимыми символами для префиксов подпаков являются: Английские буквы в нижнем и верхнем регистре, символы, подчеркивания и
Допустимыми символами для префиксов подпапок являются: Английские буквы в нижнем и верхнем регистре, символы, подчеркивания и
слэш, где слэш используется в качестве разграничителя для многовложенных подпапок (например `panels/admin`).
слэш, где слэш используется в качестве разграничителя для многовложенных подпапок (например `panels/admin`).
...
@@ -150,7 +150,7 @@ ID контроллеров также могут содержать префи
...
@@ -150,7 +150,7 @@ ID контроллеров также могут содержать префи
Вы можете сконфигурировать [[yii\base\Application::controllerMap|карту контроллеров]] для того, чтобы преодолеть
Вы можете сконфигурировать [[yii\base\Application::controllerMap|карту контроллеров]] для того, чтобы преодолеть
описанные выше ограничения именования ID контроллеров и названий классов. В основном это очень удобно, когда вы используете
описанные выше ограничения именования ID контроллеров и названий классов. В основном это очень удобно, когда вы используете
сторонние контроллеры, именование которых вы не можете контроллировать.
сторонние контроллеры, именование которых вы не можете контролировать.
Вы можете сконфигурировать [[yii\base\Application::controllerMap|карту контроллеров]] в [настройках приложения](structure-applications.md#application-configurations)
Вы можете сконфигурировать [[yii\base\Application::controllerMap|карту контроллеров]] в [настройках приложения](structure-applications.md#application-configurations)
следующим образом:
следующим образом:
...
@@ -279,7 +279,7 @@ public function actions()
...
@@ -279,7 +279,7 @@ public function actions()
названия класса действия или [конфигурация](concept-configurations.md). В отличие от встроенных действий, ID отдельных действий могут
названия класса действия или [конфигурация](concept-configurations.md). В отличие от встроенных действий, ID отдельных действий могут
содержать произвольные символы, до тех пор пока они определены в методе `actions()`.
содержать произвольные символы, до тех пор пока они определены в методе `actions()`.
Для создания отдельного действия, вы должны унаследоваться от класса [[yii\base\Action]] или его потомков, и реализовать
Для создания отдельного действия, вы должны наследоваться от класса [[yii\base\Action]] или его потомков, и реализовать
метод `run()` с областью видимости public. Роль метода `run()` аналогична другим методам действий. Например,
метод `run()` с областью видимости public. Роль метода `run()` аналогична другим методам действий. Например,
```php
```php
...
@@ -327,7 +327,7 @@ public function actionForward()
...
@@ -327,7 +327,7 @@ public function actionForward()
### Параметры действий <a name="action-parameters"></a>
### Параметры действий <a name="action-parameters"></a>
Методы действий для встроенных действий и методы `run()` для отдельных действий могут принимать параметры,
Методы действий для встроенных действий и методы `run()` для отдельных действий могут принимать параметры,
называемые *параметры действий*. Их значения беруться из запросов. Для [[yii\web\Application|Веб приложений]],
называемые *параметры действий*. Их значения берутся из запросов. Для [[yii\web\Application|Веб приложений]],
значение каждого из параметров действия берется из `$_GET`, используя название параметра в качестве ключа;
значение каждого из параметров действия берется из `$_GET`, используя название параметра в качестве ключа;
для [[yii\console\Application|консольных приложений]], они соответствуют аргументам командной строки.
для [[yii\console\Application|консольных приложений]], они соответствуют аргументам командной строки.
...
@@ -354,7 +354,7 @@ class PostController extends Controller
...
@@ -354,7 +354,7 @@ class PostController extends Controller
*`http://hostname/index.php?r=post/view&id=123&version=2`: параметрам `$id` и `$version` будут присвоены
*`http://hostname/index.php?r=post/view&id=123&version=2`: параметрам `$id` и `$version` будут присвоены
значения `'123'` и `'2'` соответственно;
значения `'123'` и `'2'` соответственно;
*`http://hostname/index.php?r=post/view`: будет брошено исключение [[yii\web\BadRequestHttpException]], т. к.
*`http://hostname/index.php?r=post/view`: будет брошено исключение [[yii\web\BadRequestHttpException]], т. к.
обязательный праметр `$id` не был указан в запросе;
обязательный параметр `$id` не был указан в запросе;
*`http://hostname/index.php?r=post/view&id[]=123`: будет брошено исключение [[yii\web\BadRequestHttpException]], т. к.
*`http://hostname/index.php?r=post/view&id[]=123`: будет брошено исключение [[yii\web\BadRequestHttpException]], т. к.
параметр `$id` получил неверное значение `['123']`.
параметр `$id` получил неверное значение `['123']`.
...
@@ -419,7 +419,7 @@ class SiteController extends Controller
...
@@ -419,7 +419,7 @@ class SiteController extends Controller
действия будет отменено;
действия будет отменено;
* По-умолчанию, каждый вызов метода `beforeAction()` вызовет событие `beforeAction`, на которое вы можете назначить обработчики.
* По-умолчанию, каждый вызов метода `beforeAction()` вызовет событие `beforeAction`, на которое вы можете назначить обработчики.
4. Контроллер запускает действие:
4. Контроллер запускает действие:
* Параметры действия будут проанализированы и заполенены из данных запроса.
* Параметры действия будут проанализированы и заполнены из данных запроса.
5. Контроллер последовательно вызывает методы `afterAction` контроллера, модуля (если контроллер принадлежит модулю) и приложения.
5. Контроллер последовательно вызывает методы `afterAction` контроллера, модуля (если контроллер принадлежит модулю) и приложения.
* По-умолчанию, каждый вызов метода `afterAction()` вызовет событие `afterAction`, на которое вы можете назначить обработчики.
* По-умолчанию, каждый вызов метода `afterAction()` вызовет событие `afterAction`, на которое вы можете назначить обработчики.
6. Приложение, получив результат выполнения действия, присвоит его объекту [response](runtime-responses.md).
6. Приложение, получив результат выполнения действия, присвоит его объекту [response](runtime-responses.md).