Browse Source

Improvements for Russian documentation (#18343)

Added a little grammar, removed redundant words, improved the perception
of the text
tags/2.0.39
Evgeniy Tkachenko 4 years ago committed by GitHub
parent
commit
7354329ed6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      docs/guide-ru/caching-data.md
  2. 6
      docs/guide-ru/caching-fragment.md
  3. 6
      docs/guide-ru/caching-http.md
  4. 2
      docs/guide-ru/caching-page.md
  5. 2
      docs/guide-ru/concept-aliases.md
  6. 2
      docs/guide-ru/concept-autoloading.md
  7. 2
      docs/guide-ru/concept-behaviors.md
  8. 2
      docs/guide-ru/concept-configurations.md
  9. 2
      docs/guide-ru/concept-di-container.md
  10. 2
      docs/guide-ru/concept-events.md
  11. 2
      docs/guide-ru/concept-service-locator.md
  12. 14
      docs/guide-ru/db-active-record.md
  13. 8
      docs/guide-ru/db-dao.md
  14. 10
      docs/guide-ru/db-migrations.md
  15. 20
      docs/guide-ru/db-query-builder.md
  16. 14
      docs/guide-ru/glossary.md
  17. 4
      docs/guide-ru/helper-array.md
  18. 6
      docs/guide-ru/helper-html.md
  19. 6
      docs/guide-ru/helper-url.md
  20. 2
      docs/guide-ru/input-form-javascript.md
  21. 8
      docs/guide-ru/input-forms.md
  22. 8
      docs/guide-ru/intro-upgrade-from-v1.md
  23. 2
      docs/guide-ru/intro-yii.md
  24. 4
      docs/guide-ru/rest-error-handling.md
  25. 2
      docs/guide-ru/rest-routing.md
  26. 2
      docs/guide-ru/runtime-logging.md
  27. 8
      docs/guide-ru/runtime-requests.md
  28. 8
      docs/guide-ru/runtime-responses.md
  29. 4
      docs/guide-ru/runtime-routing.md
  30. 2
      docs/guide-ru/security-authorization.md
  31. 2
      docs/guide-ru/start-forms.md
  32. 6
      docs/guide-ru/start-hello.md
  33. 2
      docs/guide-ru/start-workflow.md
  34. 14
      docs/guide-ru/structure-applications.md
  35. 6
      docs/guide-ru/structure-controllers.md
  36. 8
      docs/guide-ru/structure-models.md
  37. 2
      docs/guide-ru/structure-modules.md
  38. 2
      docs/guide-ru/test-environment-setup.md
  39. 2
      docs/guide-ru/test-fixtures.md
  40. 2
      docs/guide-ru/test-overview.md
  41. 4
      docs/guide-ru/tutorial-i18n.md
  42. 6
      docs/guide-ru/tutorial-performance-tuning.md
  43. 2
      docs/guide-ru/tutorial-yii-as-micro-framework.md

2
docs/guide-ru/caching-data.md

@ -32,7 +32,7 @@ $data = $cache->getOrSet($key, function () {
```
Если в кэше есть данные по ключу `$key`, они будут сразу возвращены.
Иначе, будет вызвана переданная анонимная функция, вычисляющаяя значение, которое будет сохранено в кэш и возвращено
Иначе, будет вызвана переданная анонимная функция, вычисляющая значение, которое будет сохранено в кэш и возвращено
из метода.
В случае, когда анонимной функции требуются данные из внешней области видимости, можно передать их с помощью

6
docs/guide-ru/caching-fragment.md

@ -17,9 +17,9 @@ if ($this->beginCache($id)) {
Таким образом заключите то, что вы хотите закэшировать между вызовом [[yii\base\View::beginCache()|beginCache()]] и
[[yii\base\View::endCache()|endCache()]]. Если содержимое будет найдено в кэше, [[yii\base\View::beginCache()|beginCache()]]
отобразит закэшированное содержимое и вернёт `false`, минуя генерацию содержимого.
В противном случае, будет выполнен код генерации контента и когда будет вызван [[yii\base\View::endCache()|endCache()]], то сгенерированное содержимое будет записано и сохранено в кэше.
В противном случае будет выполнен код генерации контента и когда будет вызван [[yii\base\View::endCache()|endCache()]], то сгенерированное содержимое будет записано и сохранено в кэше.
Также как и [кэширование данных](caching-data.md), для кэширования фрагментов требуется уникальный идентификатор для определения кэшируемого фрагмента.
Так же как и [кэширование данных](caching-data.md), для кэширования фрагментов требуется уникальный идентификатор для определения кэшируемого фрагмента.
## Параметры кэширования <span id="caching-options"></span>
@ -45,7 +45,7 @@ if ($this->beginCache($id, ['duration' => 3600])) {
### Зависимости <span id="dependencies"></span>
Также как и [кэширование данных](caching-data.md#cache-dependencies), кэшируемое содержимое фрагмента тоже может иметь зависимости. Например, отображение содержимого сообщения зависит от того, изменено или нет это сообщение.
Так же как и [кэширование данных](caching-data.md#cache-dependencies), кэшируемое содержимое фрагмента тоже может иметь зависимости. Например, отображение содержимого сообщения зависит от того, изменено или нет это сообщение.
Для определения зависимости мы устанавливаем параметр [[yii\widgets\FragmentCache::dependency|dependency]], который может быть либо объектом [[yii\caching\Dependency]], либо массивом настроек, который может быть использован для создания объекта [[yii\caching\Dependency]]. Следующий код определяет содержимое фрагмента, зависящее от изменения значения столбца `updated_at`:

6
docs/guide-ru/caching-http.md

@ -12,7 +12,7 @@ HTTP кэширование
## Заголовок `Last-Modified` <span id="last-modified"></span>
Заголовок `Last-Modified` использует временную метку timestamp, чтобы показать была ли страница изменена после того, как клиент закэшировал её.
Заголовок `Last-Modified` использует временную метку timestamp, чтобы показать, была ли страница изменена после того, как клиент закэшировал её.
Вы можете настроить свойство [[yii\filters\HttpCache::lastModified]], чтобы включить отправку заголовка `Last-Modified`. Свойство должно содержать PHP-функцию, возвращающую временную метку UNIX timestamp времени последнего изменения страницы. Сигнатура PHP-функции должна совпадать со следующей,
@ -44,7 +44,7 @@ public function behaviors()
```
Приведенный выше код устанавливает, что HTTP кэширование должно быть включено только для действия `index`. Он
генерирует `Last-Modified` HTTP заголовок на основе времени последнего сообщения. Когда браузер в первый раз посещает страницу `index`, то страница будет сгенерирована на сервере и отправлена в браузер; если браузер снова зайдёт на эту страницу и с тех пор ни один пост не обновится, то сервер не будет пересоздавать страницу и браузер будет использовать закэшированную на стороне клиента версию. В результате, будет пропущено как создание страницы на стороне сервера, так и передача содержания страницы клиенту.
генерирует `Last-Modified` HTTP заголовок на основе времени последнего сообщения. Когда браузер в первый раз посещает страницу `index`, то страница будет сгенерирована на сервере и отправлена в браузер; если браузер снова зайдёт на эту страницу и с тех пор ни один пост не обновится, то сервер не будет пересоздавать страницу и браузер будет использовать закэшированную на стороне клиента версию. В результате будет пропущено как создание страницы на стороне сервера, так и передача содержания страницы клиенту.
## Заголовок `ETag` <span id="etag"></span>
@ -81,7 +81,7 @@ public function behaviors()
```
Приведенный выше код устанавливает, что HTTP кэширование должно быть включено только для действия `view`. Он
генерирует `ETag` HTTP заголовок на основе заголовка и содержания последнего сообщения. Когда браузер в первый раз посещает страницу `view`, то страница будет сгенерирована на сервере и отправлена в браузер; если браузер снова зайдёт на эту страницу и с тех пор ни один пост не обновится, то сервер не будет пересоздавать страницу и браузер будет использовать закэшированную на стороне клиента версию. В результате, будет пропущено как создание страницы на стороне сервера, так и передача содержание страницы клиенту.
генерирует `ETag` HTTP заголовок на основе заголовка и содержания последнего сообщения. Когда браузер в первый раз посещает страницу `view`, то страница будет сгенерирована на сервере и отправлена в браузер; если браузер снова зайдёт на эту страницу и с тех пор ни один пост не обновится, то сервер не будет пересоздавать страницу и браузер будет использовать закэшированную на стороне клиента версию. В результате будет пропущено как создание страницы на стороне сервера, так и передача содержание страницы клиенту.
ETags позволяет применять более сложные и/или более точные стратегии кэширования, чем заголовок `Last-Modified`.
Например, ETag станет невалидным (некорректным), если на сайте была включена другая тема

2
docs/guide-ru/caching-page.md

@ -2,7 +2,7 @@
=================
Кэширование страниц — это кэширование всего содержимого страницы на стороне сервера. Позже, когда эта страница
будет снова запрошена, сервер вернет её из кэша вместо того чтобы генерировать её заново.
будет снова запрошена, сервер вернет её из кэша вместо того, чтобы генерировать её заново.
Кэширование страниц осуществляется при помощи [фильтра действия](structure-filters.md) [[yii\filters\PageCache]] и
может быть использовано в классе контроллера следующим образом:

2
docs/guide-ru/concept-aliases.md

@ -97,7 +97,7 @@ $cache = new FileCache([
]);
```
Для того, чтобы узнать поддерживает ли метод или свойство псевдонимы, обратитесь к документации API.
Для того, чтобы узнать, поддерживает ли метод или свойство псевдонимы, обратитесь к документации API.
Заранее определённые псевдонимы <span id="predefined-aliases"></span>

2
docs/guide-ru/concept-autoloading.md

@ -75,7 +75,7 @@ require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
```
Вы можете использовать автозагрузчик Composer без автозагрузчика Yii. Однако, скорость автозагрузки в этом случае
Вы можете использовать автозагрузчик Composer без автозагрузчика Yii. Однако скорость автозагрузки в этом случае
может уменьшится. Также вам будет необходимо следовать правилам автозагрузчика Composer.
> Info: Если вы не хотите использовать автозагрузчик Yii, создайте свою версию файла `Yii.php`

2
docs/guide-ru/concept-behaviors.md

@ -348,7 +348,7 @@ $user->touch('login_time');
### Плюсы поведений <span id="pros-for-behaviors"></span>
Поведения, как и любые другие классы, поддерживают наследование. Трейты же можно рассматривать как копипейст
Поведения, как и любые другие классы, поддерживают наследование. Трейты можно рассматривать как копипейст
на уровне языка. Они наследование не поддерживают.
Поведения могут быть прикреплены и отвязаны от компонента динамически, без необходимости модифицирования класса

2
docs/guide-ru/concept-configurations.md

@ -55,7 +55,7 @@ Yii::configure($object, $config);
созданные через геттеры и сеттеры.
* Элементы `on eventName` указывают на то, какие обработчики должны быть прикреплены к [событиям](concept-events.md) объекта.
Обратите внимание, что ключи массива начинаются с `on `. Чтобы узнать весь список поддерживаемых видов
обработчиков событий обратитесь в раздел [события](concept-events.md)
обработчиков событий, обратитесь в раздел [события](concept-events.md)
* Элементы `as behaviorName` указывают на то, какие [поведения](concept-behaviors.md) должны быть внедрены в объект.
Обратите внимание, что ключи массива начинаются с `as `; а `$behaviorConfig` представляет собой конфигурацию для
создания [поведения](concept-behaviors.md), похожую на все остальные конфигурации.

2
docs/guide-ru/concept-di-container.md

@ -110,7 +110,7 @@ $container->get('Foo', [], [
Допустим, мы работаем над API и у нас есть:
- `app\components\Request`, наследуемый от `yii\web\Request` и реализующий дополнительные возможности.
- `app\components\Response`, наследуемый от `yii\web\Response` с свойством `format`, по умолчанию инициализируемом как `json`.
- `app\components\Response`, наследуемый от `yii\web\Response` со свойством `format`, по умолчанию инициализируемом как `json`.
- `app\storage\FileStorage` и `app\storage\DocumentsReader`, где реализована некая логика для работы с документами в
неком файловом хранилище:

2
docs/guide-ru/concept-events.md

@ -280,7 +280,7 @@ Event::trigger(Dog::className(), DanceEventInterface::EVENT_DANCE);
Event::trigger(Developer::className(), DanceEventInterface::EVENT_DANCE);
```
Однако, невозможно инициализировать событие во всех классах, которые реализуют интерфейс:
Однако невозможно инициализировать событие во всех классах, которые реализуют интерфейс:
```php
// НЕ БУДЕТ РАБОТАТЬ

2
docs/guide-ru/concept-service-locator.md

@ -8,7 +8,7 @@ Service Locator является объектом, предоставляющи
В Yii Service Locator является экземпляром класса [[yii\di\ServiceLocator]] или его дочернего класса.
Наиболее часто используемый Service Locator в Yii — это объект *приложения*, который можно получить через `\Yii::$app`.
Предоставляемые им службы, такие, как компоненты `request`, `response`, `urlManager`, называют *компонентами приложения*.
Предоставляемые им службы такие, как компоненты `request`, `response`, `urlManager`, называют *компонентами приложения*.
Благодаря Service Locator вы легко можете настроить эти компоненты или даже заменить их собственными реализациями.
Помимо объекта приложения, объект каждого модуля также является Service Locator.

14
docs/guide-ru/db-active-record.md

@ -32,7 +32,7 @@ Yii поддерживает работу с Active Record для следующ
* SQLite 2 и 3: посредством [[yii\db\ActiveRecord]]
* Microsoft SQL Server 2008 и выше: посредством [[yii\db\ActiveRecord]]
* Oracle: посредством [[yii\db\ActiveRecord]]
* CUBRID 9.3 и выше: посредством [[yii\db\ActiveRecord]] (Имейте ввиду, что вследствие
* CUBRID 9.3 и выше: посредством [[yii\db\ActiveRecord]] (Имейте в виду, что вследствие
[бага](http://jira.cubrid.org/browse/APIS-658) в PDO-расширении для CUBRID, заключение значений в кавычки не работает,
поэтому необходимо использовать CUBRID версии 9.3 как на клиентской стороне, так и на сервере)
* Sphinx: посредством [[yii\sphinx\ActiveRecord]], потребуется расширение `yii2-sphinx`
@ -61,7 +61,7 @@ Yii поддерживает работу с Active Record для следующ
[[yii\db\Connection::$tablePrefix|tablePrefix]] задан как `tbl_`, `Customer` преобразуется в `tbl_customer`, а
`OrderItem` в `tbl_order_item`.
Если имя таблицы указано в формате `{{%TableName}}`, символ `%` заменяется префиксом. Например, , `{{%post}}` становится
Если имя таблицы указано в формате `{{%TableName}}`, символ `%` заменяется префиксом. Например `{{%post}}` становится
`{{tbl_post}}`. Фигуриные скобки используются для [экранирования в SQL-запросах](db-dao.md#quoting-table-and-column-names).
В нижеследующем примере мы объявляем класс Active Record с названием `Customer` для таблицы `customer`.
@ -385,7 +385,7 @@ $customer->save();
Метод [[yii\db\ActiveRecord::save()|save()]] может вставить или обновить строку данных в зависимости от состояния
Active Record объекта. Если объект создан с помощью оператора `new`, вызов метода [[yii\db\ActiveRecord::save()|save()]]
приведёт к вставке новой строки данных; если же объект был получен с помощью запроса на получение данных, вызов
приведёт к вставке новой строки данных; если объект был получен с помощью запроса на получение данных, вызов
[[yii\db\ActiveRecord::save()|save()]] обновит строку таблицы, соответствующую объекту Active Record.
Вы можете различать два состояния Active Record объекта с помощью проверки значения его свойства
@ -841,7 +841,7 @@ class Order extends ActiveRecord
ключи массива - столбцы связанных данных.
Есть простой способ запомнить это правило: как вы можете увидеть в примере выше, столбец связной Active Record
указывается сразу же после указания самого класса Active Record. Вы видите, что `customer_id` - это свойство класса
указывается сразу после указания самого класса Active Record. Вы видите, что `customer_id` - это свойство класса
`Order`, а `id` - свойство класса `Customer`.
@ -932,7 +932,7 @@ $orders = $customer->bigOrders;
При проектировании баз данных, когда между двумя таблицами имеется кратность связи many-to-many, обычно вводится
[промежуточная таблица](http://en.wikipedia.org/wiki/Junction_table). Например, таблицы `order` и `item` могут быть
связаны посредством промежуточной таблицы с названием `order_item`. Один заказ будет соотносится с несколькими товарами,
связаны посредством промежуточной таблицы с названием `order_item`. Один заказ будет соотноситься с несколькими товарами,
в то время как один товар будет также соотноситься с несколькими заказами.
При объявлении подобных связей вы можете пользоваться методом [[yii\db\ActiveQuery::via()|via()]] или методом
@ -1147,7 +1147,7 @@ $customers = Customer::find()
По умолчанию, метод [[yii\db\ActiveQuery::joinWith()|joinWith()]] будет использовать конструкцию `LEFT JOIN` для
объединения основной таблицы со связной. Вы можете указать другой тип операции JOIN (например, `RIGHT JOIN`) с помощью
третьего параметра этого метода - `$joinType`. Если же вам нужен `INNER JOIN`, вы можете вместо этого просто вызвать
третьего параметра этого метода - `$joinType`. Если вам нужен `INNER JOIN`, вы можете вместо этого просто вызвать
метод [[yii\db\ActiveQuery::innerJoinWith()|innerJoinWith()]].
Вызов метода [[yii\db\ActiveQuery::joinWith()|joinWith()]] будет [жадно загружать](#lazy-eager-loading) связные данные
@ -1214,7 +1214,7 @@ $query->joinWith([
$query->joinWith(['orders o'])->orderBy('o.id');
```
Этот синтаксис работает для простых связей. Если же необходимо использовать связующую таблицу, например
Этот синтаксис работает для простых связей. Если необходимо использовать связующую таблицу, например
`$query->joinWith(['orders.product'])`, то вызовы joinWith вкладываются друг в друга:
```php

8
docs/guide-ru/db-dao.md

@ -202,7 +202,7 @@ $post2 = $command->queryOne();
```
Обратите внимание что вы связываете маркер `$id` с переменной перед выполнением запроса, и затем меняете это значение
перед каждым последующим выполнением (часто это делается в цикле). Выполнении запросов таким образом может быть значительно
перед каждым последующим выполнением (часто это делается в цикле). Выполнение запросов таким образом может быть значительно
более эффективным, чем выполнение запроса для каждого значения параметра.
### Выполнение Не-SELECT запросов <span id="non-select-queries"></span>
@ -545,7 +545,7 @@ Yii::$app->db->createCommand("UPDATE user SET username='demo' WHERE id=1")->exec
```
Конфигурация выше, определяет два основных и четыре подчинённых серверов. Компонент `Connection` поддерживает
балансировку нагрузки и переключение при сбое между основными серверами, также как и между подчинёнными. Различие
балансировку нагрузки и переключение при сбое между основными серверами, так же как и между подчинёнными. Различие
заключается в том, что когда ни к одному из основных серверов не удастся подключиться будет выброшено исключение.
> Note: Когда вы используете свойство [[yii\db\Connection::masters|masters]] для настройки одного или нескольких
@ -596,7 +596,7 @@ $rows = Yii::$app->db->useMaster(function ($db) {
## Работа со схемой базы данных <span id="database-schema"></span>
Yii DAO предоставляет целый набор методов для управления схемой базы данных, таких как создание новых таблиц, удаление
столбцов из таблицы, и т.д.. Эти методы описаны ниже:
столбцов из таблицы, и т.д. Эти методы описаны ниже:
* [[yii\db\Command::createTable()|createTable()]]: создание таблицы
* [[yii\db\Command::renameTable()|renameTable()]]: переименование таблицы
@ -632,5 +632,5 @@ $table = Yii::$app->db->getTableSchema('post');
```
Метод вернёт объект [[yii\db\TableSchema]], который содержит информацию о столбцах таблицы, первичных ключах, внешних
ключах, и т.д.. Вся эта информация используется главным образом для [построителя запросов](db-query-builder.md) и
ключах, и т.д. Вся эта информация используется главным образом для [построителя запросов](db-query-builder.md) и
[active record](db-active-record.md), чтоб помочь вам писать независимый от базы данных код.

10
docs/guide-ru/db-migrations.md

@ -47,7 +47,7 @@ yii migrate/create create_news_table
> Note: Поскольку аргумент `name` будет использован как часть имени класса создаваемой миграции, он должен содержать только буквы, цифры и/или символы подчеркивания.
Приведенная выше команда создаст новый PHP класс с именем файла `m150101_185401_create_news_table.php` в директории `@app/migrations`. Файл содержит следующий код, который главным образом декларирует класс миграции `m150101_185401_create_news_table` с следующим каркасом кода:
Приведенная выше команда создаст новый PHP класс с именем файла `m150101_185401_create_news_table.php` в директории `@app/migrations`. Файл содержит следующий код, который главным образом декларирует класс миграции `m150101_185401_create_news_table` со следующим каркасом кода:
```php
<?php
@ -84,7 +84,7 @@ class m150101_185401_create_news_table extends Migration
Каждая миграция базы данных определяется как PHP класс расширяющийся от [[yii\db\Migration]]. Имя класса миграции автоматически создается в формате `m<YYMMDD_HHMMSS>_<Name>` (`m<ГодМесяцДень_ЧасыМинутыСекунды>_<Имя>`), где
* `<YYMMDD_HHMMSS>` относится к UTC дате-времени при котором команда создания миграции была выполнена.
* `<Name>` это тоже самое значение аргумента `name` которое вы прописываете в команду.
* `<Name>` это то же самое значение аргумента `name` которое вы прописываете в команду.
В классе миграции, вы должны прописать код в методе `up()` когда делаете изменения в структуре базы данных.
Вы также можете написать код в методе `down()`, чтобы отменить сделанные `up()` изменения. Метод `up` вызывается для обновления базы данных с помощью данной миграции, а метод `down()` вызывается для отката изменений базы данных.
@ -553,7 +553,7 @@ class m160328_041642_create_junction_table_for_post_and_tag_tables extends Migra
При выполнении сложных миграций баз данных, важно обеспечить каждую миграцию либо успехом, либо ошибкой, в целом так, чтобы база данных могла поддерживать целостность и непротиворечивость. Для достижения данной цели рекомендуется, заключить операции каждой миграции базы данных в [транзакции](db-dao.md#performing-transactions).
Самый простой способ реализации транзакций миграций это прописать код миграций в методы `safeUp()` и `safeDown()`. Эти два метода отличаются от методов `up()` и `down()` тем, что они неявно заключены в транзакции. В результате, если какая-либо операция в этих методах не удается, все предыдущие операции будут отменены автоматически.
Самый простой способ реализации транзакций миграций это прописать код миграций в методы `safeUp()` и `safeDown()`. Эти два метода отличаются от методов `up()` и `down()` тем, что они неявно заключены в транзакции. В результате если какая-либо операция в этих методах не удается, все предыдущие операции будут отменены автоматически.
В следующем примере, помимо создания таблицы `news` мы также вставляем в этой таблице начальную строку.
@ -628,7 +628,7 @@ class m150101_185401_create_news_table extends Migration
> Info: [[yii\db\Migration]] не предоставляет методы запросов к базе данных. Это потому, что обычно не требуется отображать дополнительные сообщения об извлечении данных из базы данных. Это также, потому, что можно использовать более мощный [Построитель Запросов](db-query-builder.md) для построения и выполнения сложных запросов.
> Note: при обработке данных внутри миграции, может показаться, что использование существующих классов [Active Record](db-active-record.md), со всей их готовой бизнес логикой, будет разумным решением и упросит код миграции. Однако, следует помнить, что код миграций не должен меняться, по определению. В отличии от миграций, бизнес логика приложений часто изменяется. Это может привести к нарушению работы миграции при определённых изменениях на уровне Active Record. Поэтому рекомендуется делать миграции независимыми от других частей приложения, таких как классы Active Record.
> Note: при обработке данных внутри миграции, может показаться, что использование существующих классов [Active Record](db-active-record.md), со всей их готовой бизнес логикой, будет разумным решением и упросит код миграции. Однако следует помнить, что код миграций не должен меняться, по определению. В отличие от миграций, бизнес логика приложений часто изменяется. Это может привести к нарушению работы миграции при определённых изменениях на уровне Active Record. Поэтому рекомендуется делать миграции независимыми от других частей приложения, таких как классы Active Record.
## Применение Миграций <span id="applying-migrations"></span>
@ -731,7 +731,7 @@ yii migrate/mark 1392853618 # используя вре
Обратите внимание, что данный каталог должен существовать, иначе команда будет выдавать ошибку.
* `migrationTable`: строка - string (по умолчанию `migration`). Определяет имя таблицы в базе данных в которой хранится
информация о истории миграций. Эта таблица будет автоматически создана командой миграции, если её не существует.
информация об истории миграций. Эта таблица будет автоматически создана командой миграции, если её не существует.
Вы также можете создать её вручную, используя структуру `version varchar(255) primary key, apply_time integer`.
* `db`: строка - string (по умолчанию `db`). Определяет ID базы данных [компонента приложения](structure-application-components.md).

20
docs/guide-ru/db-query-builder.md

@ -384,7 +384,7 @@ $query->orderBy('id ASC, name DESC');
> Note: Вы должны использовать массив для указания `ORDER BY` содержащих выражения БД.
Вы можете вызывать [[yii\db\Query::addOrderBy()|addOrderBy()]] для добавления столбцов в фрагмент `ORDER BY`.
Вы можете вызывать [[yii\db\Query::addOrderBy()|addOrderBy()]] для добавления столбцов во фрагмент `ORDER BY`.
```php
$query->orderBy('id ASC')
@ -410,7 +410,7 @@ $query->groupBy('id, status');
> Note: Вы должны использовать массив для указания `GROUP BY` содержащих выражения БД.
Вы можете вызывать [[yii\db\Query::addGroupBy()|addGroupBy()]] для добавления имён столбцов в фрагмент `GROUP BY`.
Вы можете вызывать [[yii\db\Query::addGroupBy()|addGroupBy()]] для добавления имён столбцов во фрагмент `GROUP BY`.
Например,
```php
@ -429,10 +429,10 @@ $query->groupBy(['id', 'status'])
$query->having(['status' => 1]);
```
Пожалуйста, обратитесь к документации для [where()](#where) для более подробной информации о определении условий.
Пожалуйста, обратитесь к документации для [where()](#where) для более подробной информации об определении условий.
Вы можете вызывать [[yii\db\Query::andHaving()|andHaving()]] или [[yii\db\Query::orHaving()|orHaving()]] для добавления
дополнительных условий в фрагмент `HAVING`.
дополнительных условий во фрагмент `HAVING`.
```php
// ... HAVING (`status` = 1) AND (`age` > 30)
@ -471,7 +471,7 @@ $query->join('LEFT JOIN', 'post', 'post.user_id = user.id');
- `$type`: тип объединения, например, `'INNER JOIN'`, `'LEFT JOIN'`.
- `$table`: имя таблицы, которая должна быть присоединена.
- `$on`: необязательное условие объединения, то есть фрагмент `ON`. Пожалуйста, обратитесь к документации для
[where()](#where) для более подробной информации о определении условий. Отметим, что синтаксис массивов **не работает**
[where()](#where) для более подробной информации об определении условий. Отметим, что синтаксис массивов **не работает**
для задания условий для столбцов, то есть `['user.id' => 'comment.userId']` будет означать условие, где ID пользователя
должен быть равен строке `'comment.userId'`. Вместо этого стоит указывать условие в виде строки `'user.id = comment.userId'`.
- `$params`: необязательные параметры присоединяемые к условию объединения.
@ -498,7 +498,7 @@ $subQuery = (new \yii\db\Query())->from('post');
$query->leftJoin(['u' => $subQuery], 'u.id = author_id');
```
В этом случае, вы должны передать подзапросы в массиве и использовать ключи для определения алиасов.
В этом случае вы должны передать подзапросы в массиве и использовать ключи для определения алиасов.
### [[yii\db\Query::union()|union()]] <span id="union"></span>
@ -554,7 +554,7 @@ $row = (new \yii\db\Query())
> Note: метод [[yii\db\Query::one()|one()]] вернёт только первую строку результата запроса. Он НЕ добавляет
`LIMIT 1` в генерируемый SQL. Это хорошо и предпочтительно если вы знаете, что запрос вернёт только одну или несколько
строк данных (например, при запросе по первичному ключу). Однако, если запрос потенциально может вернут много
строк данных (например, при запросе по первичному ключу). Однако если запрос потенциально может вернут много
строк данных, вы должны вызвать `limit(1)` для повышения производительности, Например,
`(new \yii\db\Query())->from('user')->limit(1)->one()`.
@ -574,7 +574,7 @@ $count = (new \yii\db\Query())
При вызове методов выборки [[yii\db\Query]], внутри на самом деле проводится следующая работа:
* Вызывается [[yii\db\QueryBuilder]] для генерации SQL запроса на основе текущего [[yii\db\Query]];
* Создаёт объект [[yii\db\Command]] с сгенерированным SQL запросом;
* Создаёт объект [[yii\db\Command]] со сгенерированным SQL запросом;
* Вызывается выбирающий метод (например [[yii\db\Command::queryAll()|queryAll()]]) из [[yii\db\Command]] для выполнения SQL запроса и извлечения данных.
Иногда вы можете захотеть увидеть или использовать SQL запрос построенный из объекта [[yii\db\Query]]. Этой цели можно
@ -630,7 +630,7 @@ $query = (new \yii\db\Query())
### Пакетная выборка <span id="batch-query"></span>
При работе с большими объемами данных, методы на подобие [[yii\db\Query::all()]] не подходят, потому что они требуют
При работе с большими объемами данных, методы наподобие [[yii\db\Query::all()]] не подходят, потому что они требуют
загрузки всех данных в память. Чтобы сохранить требования к памяти минимальными, Yii предоставляет поддержку
так называемых пакетных выборок. Пакетная выборка делает возможным курсоры данных и выборку данных пакетами.
@ -662,7 +662,7 @@ SQL запрос к базе данных. Данные будут выбира
По сравнению с [[yii\db\Query::all()]], пакетная выборка загружает только по 100 строк данных за раз в память.
Если вы обрабатываете данные и затем сразу выбрасываете их, пакетная выборка может помочь уменьшить использование памяти.
Если указать индексный столбец через [[yii\db\Query::indexBy()]], в пакетной выборке индекс будет сохранятся.
Если указать индексный столбец через [[yii\db\Query::indexBy()]], в пакетной выборке индекс будет сохраняться.
Например,
```php

14
docs/guide-ru/glossary.md

@ -2,13 +2,15 @@
## alias
Alias это строка которую Yii использует чтобы указывать на класс или директорию, например '@app/vendor'.
Alias - это строка, с помощью которой Yii указывает на класс или директорию, например '@app/vendor'.
## application
Приложение является центральным объектом на протяжении HTTP запроса. Оно сожержит несколько компонентов и с ними получает информацию из запроса и отправляет ее для дальнейшей обработки.
Приложение является центральным объектом на протяжении HTTP запроса. Оно содержит несколько компонентов и с ними
получает информацию из запроса и отправляет ее для дальнейшей обработки.
Объект приложения создается в виде синглтона входным скриптом. Объект приложения доступен из любого места через `\Yii::$app`.
Объект приложения создается в виде Singleton(шаблон проектирования Одиночка) входным скриптом.
Объект приложения доступен из любого места через `\Yii::$app`.
## assets
@ -34,19 +36,19 @@ Bundle, известный как пакет в Yii 1.1, относится к
## extension
Расширения это набор классов, комплект ресурсов и конфигураций, которые добавляют приложению функциональность.
Расширения - это набор классов, комплект ресурсов и конфигураций, которые добавляют приложению функциональность.
# I
## installation
Установка это процесс подготовки чего-либо к работе либо путем чтения readme файла или выполнением подготовленного сценария. В случае Yii он устанавливает разрешения и необходимые зависимости.
Установка - это процесс подготовки чего-либо к работе либо путем чтения readme файла или выполнением подготовленного сценария. В случае Yii он устанавливает разрешения и необходимые зависимости.
# M
## module
Модуль это подпрограмма которая содержит элементы MVC, такие как модели, представления, контроллеры и т.д. и может быть использована без главного приложения. Обычно пробрасывая запросы в модуль вместо обработки контроллером.
Модуль - это подпрограмма, которая содержит элементы MVC: модели, представления, контроллеры и т.д. Может быть использована без главного приложения. Обычно пробрасывая запросы в модуль вместо обработки контроллером.
# N

4
docs/guide-ru/helper-array.md

@ -1,11 +1,11 @@
ArrayHelper
===========
Вдобавок к [богатому набору функций](https://secure.php.net/manual/ru/book.array.php) для работы с массивами, которые есть в самом PHP, хелпер Yii Array предоставляет свои статические функции, которые могут быть вам полезны.
Вдобавок к [богатому набору функций](https://secure.php.net/manual/ru/book.array.php) для работы с массивами, которые есть в самом PHP, хелпер Yii Array предоставляет свои статические функции - возможно они могут быть вам полезны.
## Получение значений <span id="getting-values"></span>
Извлечение значений из массива, объекта или структуры состоящей из них обоих с помощью стандартных средств PHP является довольно скучным занятием. Сперва вам нужно проверить есть ли соответствующий ключ с помощью `isset`, и если есть – получить, если нет – подставить значение по умолчанию.
Извлечение значений из массива, объекта или структуры состоящей из них обоих с помощью стандартных средств PHP является довольно скучным занятием. Сначала вам нужно проверить есть ли соответствующий ключ с помощью `isset`, и если есть – получить, если нет – подставить значение по умолчанию.
```php
class User

6
docs/guide-ru/helper-html.md

@ -101,7 +101,7 @@ echo Html::tag('div', 'Сохранить', $options);
// выведет '<div class="btn btn-success btn-lg">Сохранить</div>'
```
`Html::addCssClass()` предотвращает дублирование классов, поэтому можно не беспокоиться о том, что какой-либо класс
`Html::addCssClass()` предотвращает дублирование классов, поэтому можно не беспокоиться, что какой-либо класс
будет добавлен дважды:
```php
@ -272,7 +272,7 @@ $decodedUserName = Html::decode($userName);
<?= Html::activeCheckboxList($user, 'role', ArrayHelper::map($roleModels, 'id', 'name')) ?>
```
Если же нет, используйте радио-переключатель:
Если нет, используйте радио-переключатель:
```php
<?= Html::radioList('roles', [16, 42], ArrayHelper::map($roleModels, 'id', 'name')) ?>
@ -282,7 +282,7 @@ $decodedUserName = Html::decode($userName);
### Тэги label и отображение ошибок <span id="labels-and-errors"></span>
Также как и для полей ввода, есть два метода формирования тэгов label для форм. Есть "active label", считывающий
Так же как и для полей ввода, есть два метода формирования тэгов label для форм. Есть "active label", считывающий
данные из модели и обычный тэг "label", принимающий на вход непосредственно сами данные:
```php

6
docs/guide-ru/helper-url.md

@ -26,11 +26,11 @@ $absoluteBaseUrl = Url::base(true);
$httpsAbsoluteBaseUrl = Url::base('https');
```
Единственный параметр данного метода работает также как и `Url::home()`.
Единственный параметр данного метода работает так же как и `Url::home()`.
## Создание URL <span id="creating-urls"></span>
Чтобы создать URL для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]].
Чтобы создать URL для соответствующего роута, используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]].
Для того чтобы создать URL:
```php
@ -62,7 +62,7 @@ $url = Url::toRoute(['product/view', 'id' => 42]);
- Если роут начинается не со слеша (например, `site/index`), то он будет считаться относительным роутом текущего модуля
и будет определен с помощью [[\yii\base\Module::uniqueId|uniqueId]].
Начиная с версии 2.0.2, вы можете задавать роуты с помощью [псевдонимов](concept-aliases.md). В этом случае, сначала
Начиная с версии 2.0.2, вы можете задавать роуты с помощью [псевдонимов](concept-aliases.md). В этом случае сначала
псевдоним будет сконвертирован в соответствующий роут, который будет преобразован в абсолютный в соответствии с вышеописанными
правилами.

2
docs/guide-ru/input-form-javascript.md

@ -105,7 +105,7 @@ function (event)
### `ajaxBeforeSend`
`ajaxBeforeSend` cобытие инициируется перед отправкой AJAX запроса для проверки основанной на AJAX.
`ajaxBeforeSend` событие инициируется перед отправкой AJAX запроса для проверки основанной на AJAX.
Сигнатура обработчика события должна быть:

8
docs/guide-ru/input-forms.md

@ -56,9 +56,9 @@ $form = ActiveForm::begin([
В вышеприведённом коде [[yii\widgets\ActiveForm::begin()|ActiveForm::begin()]] не только создаёт экземпляр формы, но
также и знаменует её начало. Весь контент, расположенный между [[yii\widgets\ActiveForm::begin()|ActiveForm::begin()]]
и [[yii\widgets\ActiveForm::end()|ActiveForm::end()]], будет завёрнут в HTML-тег `<form>`. Вы можете изменить некоторые
настройки виджета через передачу массива в его `begin` метод, также как и в любом другом виджете. В этом случае дополнительный CSS-класс и идентификатор будет прикреплён к открывающемуся тегу `<form>`. Для просмотра всех доступных настроек, пожалуйста, обратитесь к документации API [[yii\widgets\ActiveForm]].
настройки виджета через передачу массива в его `begin` метод, так же как и в любом другом виджете. В этом случае дополнительный CSS-класс и идентификатор будет прикреплён к открывающемуся тегу `<form>`. Для просмотра всех доступных настроек, пожалуйста, обратитесь к документации API [[yii\widgets\ActiveForm]].
Для создания в форме элемента с меткой и любой применимой валидацией с помощью JavaScript, вызывается [[yii\widgets\ActiveForm::field()|ActiveForm::field()]], который возвращает экземпляр [[yii\widgets\ActiveField]]. Когда этот метод вызывается непосредственно, то результатом будет текстовый элемент (`input type="text"`). Для того, чтобы настроить элемент, можно вызвать один за одним дополнительные методы [[yii\widgets\ActiveField|ActiveField]]:
Для создания в форме элемента с меткой и любой применимой валидацией с помощью JavaScript, вызывается [[yii\widgets\ActiveForm::field()|ActiveForm::field()]], который возвращает экземпляр [[yii\widgets\ActiveField]]. Когда этот метод вызывается непосредственно, то результатом будет текстовый элемент (`input type="text"`). Для того, чтобы настроить элемент, можно вызвать один за другим дополнительные методы [[yii\widgets\ActiveField|ActiveField]]:
```php
// элемент формы для ввода пароля
@ -94,7 +94,7 @@ echo $form->field($model, 'items[]')->checkboxList(['a' => 'Item A', 'b' => 'Ite
Дополнительные HTML-элементы можно добавить к форме, используя обычный HTML или методы из класса помощника [[yii\helpers\Html|Html]], как это было сделано с помощью [[yii\helpers\Html::submitButton()|Html::submitButton()]] в примере, приведённом выше.
> Tip: Если вы использует Twitter Bootstrap CSS в своём приложении, то воспользуйтесь [[yii\bootstrap\ActiveForm]] вместо [[yii\widgets\ActiveForm]]. Он добавит к ActiveForm дополнительные стили, которые сработают в рамках bootstrap CSS.
> Tip: Если вы используете Twitter Bootstrap CSS в своём приложении, то воспользуйтесь [[yii\bootstrap\ActiveForm]] вместо [[yii\widgets\ActiveForm]]. Он добавит к ActiveForm дополнительные стили, которые сработают в рамках bootstrap CSS.
> Tip: для добавления "звёздочки" к обязательным элементам формы, воспользуйтесь следующим CSS:
>
@ -153,7 +153,7 @@ Pjax::begin([
ActiveForm::end();
Pjax::end();
```
> Tip: Будьте осторожны с ссылками внутри виджета [[yii\widgets\Pjax|Pjax]] так как ответ будет
> Tip: Будьте осторожны со ссылками внутри виджета [[yii\widgets\Pjax|Pjax]] так как ответ будет
> также отображаться внутри виджета. Чтобы ссылка работала без PJAX, добавьте к ней HTML-атрибут
> `data-pjax="0"`.

8
docs/guide-ru/intro-upgrade-from-v1.md

@ -8,7 +8,7 @@
Если прежде вы не использовали Yii 1.1, вы можете сразу перейти к разделу «[Начало работы](start-installation.md)».
Также учтите, что в Yii 2.0 гораздо больше новых возможностей, чем описано далее. Настоятельно рекомендуется, изучить
всё руководство. Вполне возможно, что то, что раньше приходилось разрабатывать самостоятельно теперь является частью
всё руководство. Вполне возможно, что-то, что раньше приходилось разрабатывать самостоятельно теперь является частью
фреймворка.
@ -16,7 +16,7 @@
--------
Yii 2.0 широко использует [Composer](https://getcomposer.org/), который является основным менеджером зависимостей для PHP.
Установка как фреймворка, так и расширений, осуществляется через Composer. Подробно о установке Yii 2.0 вы можете узнать
Установка как фреймворка, так и расширений, осуществляется через Composer. Подробно об установке Yii 2.0 вы можете узнать
из раздела «[Установка Yii](start-installation.md)». О том, как создавать расширения для Yii 2.0 или адаптировать
уже имеющиеся расширения от версии 1.1, вы можете узнать из раздела «[Создание расширений](structure-extensions.md#creating-extensions)».
@ -260,7 +260,7 @@ ActiveForm::end();
В Yii 2.0 темы работают совершенно по-другому. Теперь они основаны на механизме сопоставления путей исходного файла
представления с темизированным файлом. Например, если используется сопоставление путей `['/web/views' => '/web/themes/basic']`,
то темизированная версия файла представления `/web/views/site/index.php` будет находится в `/web/themes/basic/site/index.php`.
то темизированная версия файла представления `/web/views/site/index.php` будет находиться в `/web/themes/basic/site/index.php`.
По этой причине темы могут быть применены к любому файлу представления, даже к представлению, отрендеренному внутри контекста
контроллера или виджета. Также, больше не существует компонента `CThemeManager`. Вместо этого, `theme` является конфигурируемым
свойством компонента приложения `view`.
@ -399,7 +399,7 @@ Active Record
построение запросов и работу со связями.
Класс `CDbCriteria` версии 1.1 был заменен [[yii\db\ActiveQuery]]. Этот класс наследуется от [[yii\db\Query]] и таким
образом получает все методы, необходимые для построения запроса. Чтобы начать строить запрос следует вызвать метод
образом получает все методы, необходимые для построения запроса. Чтобы начать строить запрос, следует вызвать метод
[[yii\db\ActiveRecord::find()]]:
```php

2
docs/guide-ru/intro-yii.md

@ -42,7 +42,7 @@ Yii — не проект одного человека. Он поддержив
Требования к ПО и знаниям
-------------------------
Yii 2.0 требует PHP 5.4.0 и выше и наилучшим образом работает на последней версии PHP 7. Чтобы узнать требования для отдельных возможностей вы можете запустить скрипт проверки
Yii 2.0 требует PHP 5.4.0 и выше и наилучшим образом работает на последней версии PHP 7. Чтобы узнать требования для отдельных возможностей, вы можете запустить скрипт проверки
требований, который поставляется с каждым релизом фреймворка.
Для разработки на Yii потребуется общее понимание ООП, так как фреймворк полностью следует этой парадигме. Также стоит

4
docs/guide-ru/rest-error-handling.md

@ -3,7 +3,7 @@
Если при обработке запроса к RESTful API в запросе пользователя обнаруживается ошибка или происходит
что-то непредвиденное на сервере, вы можете просто выбрасывать исключение, чтобы уведомить пользователя о нештатной ситуации.
Если же вы можете установить конкретную причину ошибки (например, запрошенный ресурс не существует), вам следует подумать
Если вы можете установить конкретную причину ошибки (например, запрошенный ресурс не существует), вам следует подумать
о том, чтобы выбрасывать исключение с соответствующим кодом состояния HTTP (например, [[yii\web\NotFoundHttpException]],
соответствующее коду состояния 404). Yii отправит ответ с соответствующим
HTTP-кодом и текстом. Он также включит в тело ответа сериализованное представление
@ -89,4 +89,4 @@ return [
```
Приведённый выше код изменит формат ответа (как для удачного запроса, так и для ошибок) если передан `GET`-параметр
`suppress_response_code`.
`suppress_response_code`.

2
docs/guide-ru/rest-routing.md

@ -50,7 +50,7 @@
* `OPTIONS /users/123`: список HTTP-методов, поддерживаемые точкой входа `/users/123`.
Вы можете настроить опции `only` и `except`, явно указав для них список действий, которые поддерживаются или
которые должны быть отключены, соответственно. Например:
должны быть отключены, соответственно. Например:
```php
[

2
docs/guide-ru/runtime-logging.md

@ -222,7 +222,7 @@ return [
]
```
Из-за того, что значения максимального количества сообщений для передачи и выгрузки по умолчанию достаточно велико, при вызове метода `Yii::debug()` или любого другого метода логирования, сообщение не появится сразу в файле или таблице базы данных. Такое поведение может стать проблемой, например, в консольных приложениях с большим временем исполнения. Для того, чтобы все сообщения логов сразу же попадали в лог, необходимо установить значения свойств [[yii\log\Dispatcher::flushInterval|flushInterval]] и [[yii\log\Target::exportInterval|exportInterval]] равными 1, например так:
Из-за того, что значения максимального количества сообщений для передачи и выгрузки по умолчанию достаточно велико, при вызове метода `Yii::debug()` или любого другого метода логирования, сообщение не появится сразу в файле или таблице базы данных. Такое поведение может стать проблемой, например, в консольных приложениях с большим временем исполнения. Для того, чтобы все сообщения логов сразу попадали в лог, необходимо установить значения свойств [[yii\log\Dispatcher::flushInterval|flushInterval]] и [[yii\log\Target::exportInterval|exportInterval]] равными 1, например так:
```php
return [

8
docs/guide-ru/runtime-requests.md

@ -45,7 +45,7 @@ $params = $request->bodyParams;
$param = $request->getBodyParam('id');
```
> Info: В отличии от `GET` параметров, параметры, которые были переданы через `POST`, `PUT`, `PATCH` и д.р. отправляются в теле запроса.
> Info: В отличие от `GET` параметров, параметры, которые были переданы через `POST`, `PUT`, `PATCH` и д.р. отправляются в теле запроса.
Компонент `request` будет обрабатывать эти параметры, когда вы попробуете к ним обратиться через методы, описанные выше.
Вы можете настроить способ обработки этих параметров через настройку свойства [[yii\web\Request::parsers]].
@ -75,7 +75,7 @@ if ($request->isPut) { /* текущий запрос является PUT за
* [[yii\web\Request::absoluteUrl|absoluteUrl]]: вернёт адрес `http://example.com/admin/index.php/product?id=100`,
который содержит полный URL, включая имя хоста.
* [[yii\web\Request::hostInfo|hostInfo]]: вернёт адрес `http://example.com`, который содержит только имя хоста.
* [[yii\web\Request::pathInfo|pathInfo]]: вернёт адрес `/product`, который содержит часть между адресом начального скрипта и параметрами запроса, которые идут после знака вопроса.
* [[yii\web\Request::pathInfo|pathInfo]]: вернёт адрес `/product`, который содержит часть между адресом начального скрипта и параметрами запроса, идущих после знака вопроса.
* [[yii\web\Request::queryString|queryString]]: вернёт адрес `id=100`, который содержит часть URL после знака вопроса.
* [[yii\web\Request::baseUrl|baseUrl]]: вернёт адрес `/admin`, который является частью URL после информации о хосте и перед именем входного скрипта.
* [[yii\web\Request::scriptUrl|scriptUrl]]: вернёт адрес `/admin/index.php`, который содержит URL без информации о хосте и параметрах запроса.
@ -138,7 +138,7 @@ $userIP = Yii::$app->request->userIP;
[[yii\web\Request::ipHeaders|ipHeaders]] и
[[yii\web\Request::secureProtocolHeaders|secureProtocolHeaders]]
Ниже приведена конфигурация компонента `request` для приложения, которое работает за рядом обратных прокси, которые расположены в IP-сети `10.0.2.0/24`:
Ниже приведена конфигурация компонента `request` для приложения, которое работает за рядом обратных прокси, расположенных в IP-сети `10.0.2.0/24`:
```php
'request' => [
@ -176,4 +176,4 @@ IP-адрес, по умолчанию, отправляется прокси-с
],
```
В приведенной выше конфигурации все заголовки, перечисленные в `secureHeaders`, отфильтровываются из запроса, кроме заголовков `X-ProxyUser-Ip` и `Front-End-Https` в случае, если запрос создан прокси.
В этом случае, первый используется для получения IP-адреса пользователя, настроенного в `ipHeaders`, а последний будет использоваться для определения результата [[yii\web\Request::getIsSecureConnection()]].
В этом случае первый используется для получения IP-адреса пользователя, настроенного в `ipHeaders`, а последний будет использоваться для определения результата [[yii\web\Request::getIsSecureConnection()]].

8
docs/guide-ru/runtime-responses.md

@ -24,7 +24,7 @@ Yii::$app->response->statusCode = 200;
```
Однако в большинстве случаев явная установка не требуется так как значение [[yii\web\Response::statusCode]]
по умолчанию равно 200. Если же вам нужно показать, что запрос не удался, вы можете выбросить соответствующее
по умолчанию равно 200. Если вам нужно показать, что запрос не удался, вы можете выбросить соответствующее
HTTP-исключение:
```php
@ -216,8 +216,8 @@ public function actionDownload()
}
```
При вызове метода отправки файла вне методов действий чтобы быть уверенным, что к ответу не будет добавлено никакое
нежелательное содержимое, следует вызвать сразу после него [[yii\web\Response::send()]].
Чтобы быть уверенным, что к ответу не будет добавлено никакое
нежелательное содержимое, при вызове метода [[yii\web\Response::sendFile()]] вне методов action, следует вызвать сразу после него [[yii\web\Response::send()]].
```php
\Yii::$app->response->sendFile('path/to/file.txt')->send();
@ -239,7 +239,7 @@ Web-серверов:
## Отправка ответа <span id="sending-response"></span>
Содержимое ответа не отправляется пользователю до вызова метода [[yii\web\Response::send()]]. По умолчанию он вызывается
автоматически в конце метода [[yii\base\Application::run()]]. Однако, чтобы ответ был отправлен немедленно, вы можете
автоматически в конце метода [[yii\base\Application::run()]]. Однако чтобы ответ был отправлен немедленно, вы можете
вызвать этот метод явно.
Для отправки ответа метод [[yii\web\Response::send()]] выполняет следующие шаги:

4
docs/guide-ru/runtime-routing.md

@ -453,8 +453,8 @@ echo Url::previous();
]
```
> Note: по умолчанию [[yii\web\UrlManager::$normalizer|UrlManager::$normalizer]] отключен. Чтобы использовать
нормализацию его необходимо сконфигурировать.
> Note: По умолчанию [[yii\web\UrlManager::$normalizer|UrlManager::$normalizer]] отключен. Чтобы использовать
нормализацию, его необходимо сконфигурировать.
### Методы HTTP <span id="http-methods"></span>

2
docs/guide-ru/security-authorization.md

@ -543,7 +543,7 @@ $auth->addChild($admin, $author);
// ... add permissions as children of $admin ...
```
Обратите внимание, так как "author" добавлен как дочерняя роль к "admin", следовательно в реализации метода `execute()`
Обратите внимание, так как "author" добавлен как дочерняя роль к "admin", следовательно, в реализации метода `execute()`
класса правила вы должны учитывать эту иерархию. Именно поэтому для роли "author" метод `execute()` вернёт истину,
если пользователь принадлежит к группам 1 или 2 (это означает, что пользователь находится в группе
администраторов или авторов)

2
docs/guide-ru/start-forms.md

@ -18,7 +18,7 @@
---------------------------------------------
В файле `models/EntryForm.php` создайте класс модели `EntryForm` как показано ниже. Он будет использоваться для
хранения данных, введённых пользователем. Подробно о именовании файлов классов читайте в разделе
хранения данных, введённых пользователем. Подробно об именовании файлов классов читайте в разделе
«[Автозагрузка классов](concept-autoloading.md)».
```php

6
docs/guide-ru/start-hello.md

@ -109,10 +109,10 @@ http://hostname/index.php?r=site%2Fsay&message=Привет+мир
Параметр `r` в нашем URL требует дополнительных пояснений. Он связан с [маршрутом (route)](runtime-routing.md), который представляет
собой уникальный идентификатор, указывающий на действие. Его формат `ControllerID/ActionID`. Когда приложение получает
запрос, оно проверяет параметр `r` и, используя `ControllerID`, определяет какой контроллер следует использовать для
обработки запроса. Затем, контроллер использует часть `ActionID`, чтобы определить какое действие выполняет реальную работу.
запрос, оно проверяет параметр `r` и, используя `ControllerID`, определяет какой контроллер использовать для
обработки запроса. Затем, контроллер использует часть `ActionID`, чтобы определить, какое действие выполняет реальную работу.
В нашем случае маршрут `site/say` будет соответствовать контроллеру `SiteController` и его действию `say`.
В результате, для обработки запроса будет вызван метод `SiteController::actionSay()`.
В результате для обработки запроса будет вызван метод `SiteController::actionSay()`.
> Info: Как и действия, контроллеры также имеют идентификаторы, которые однозначно определяют их в приложении.
Идентификаторы контроллеров используют те же правила именования, что и идентификаторы действий. Имена классов

2
docs/guide-ru/start-workflow.md

@ -76,7 +76,7 @@ basic/ корневой каталог приложения
1. Пользователь обращается к [точке входа](structure-entry-scripts.md) `web/index.php`.
2. Скрипт загружает конфигурацию [configuration](concept-configurations.md) и создает экземпляр [приложения](structure-applications.md) для дальнейшей обработки запроса.
3. Приложение определяет [маршрут](runtime-routing.md) запроса при помощи компонента приложения [запрос](runtime-requests.md).
3. Приложение определяет [маршрут](runtime-routing.md) запроса при помощи компонента приложения [запрос](runtime-requests.md).
4. Приложение создает экземпляр [контроллера](structure-controllers.md) для выполнения запроса.
5. Контроллер, в свою очередь, создает [действие](structure-controllers.md) и накладывает на него фильтры.
6. Если хотя бы один фильтр дает сбой, выполнение приложения останавливается.

14
docs/guide-ru/structure-applications.md

@ -56,7 +56,7 @@ $config = require __DIR__ . '/../config/web.php';
#### [[yii\base\Application::basePath|basePath]] <span id="basePath"></span>
Свойство [[yii\base\Application::basePath|basePath]] указывает на корневую директорию приложения. Эта директория содержит
весь защищенный исходный код приложения. В данной директории обычно могут находится поддиректории `models`, `views`,
весь защищенный исходный код приложения. В данной директории обычно могут находиться поддиректории `models`, `views`,
`controllers`, содержащие код, соответствующий шаблону проектирования MVC.
Вы можете задать свойство [[yii\base\Application::basePath|basePath]] используя путь к директории или используя
@ -71,7 +71,7 @@ $config = require __DIR__ . '/../config/web.php';
### Важные свойства <span id="important-properties"></span>
Свойства, указанные в этом подразделе, часто нуждаются в преднастройке т.к. они разнятся от приложения к приложению.
Свойства, указанные в этом подразделе, часто нуждаются в предварительной настройке т.к. они разнятся от приложения к приложению.
#### [[yii\base\Application::aliases|aliases]] <span id="aliases"></span>
@ -373,7 +373,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
#### [[yii\base\Application::charset|charset]] <span id="charset"></span>
Свойство указывает кодировку, которую использует приложение. По-умолчанию значение равно `'UTF-8'`, которое должно быть
Свойство указывает кодировку, которую использует приложение. По-умолчанию значение равно `'UTF-8'` - должно быть
оставлено как есть для большинства приложения, только если вы не работаете с устаревшим кодом, который использует большее
количество данных не юникода.
@ -509,7 +509,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
### [[yii\base\Application::EVENT_BEFORE_REQUEST|EVENT_BEFORE_REQUEST]] <span id="beforeRequest"></span>
Данное событие возникает *до* того как приложение начинает обрабатывать входящий запрос.
Данное событие возникает *до* того, как приложение начинает обрабатывать входящий запрос.
Настоящее имя события - `beforeRequest`.
На момент возникновения данного события, объект приложения уже создан и проинициализирован. Таким образом, это
@ -520,7 +520,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
### [[yii\base\Application::EVENT_AFTER_REQUEST|EVENT_AFTER_REQUEST]] <span id="afterRequest"></span>
Данное событие возникает *после* того как приложение заканчивает обработку запроса, но *до* того как произойдет
Данное событие возникает *после* того, как приложение заканчивает обработку запроса, но *до* того как произойдет
отправка ответа. Настоящее имя события - `afterRequest`.
На момент возникновения данного события, обработка запроса завершена и вы можете воспользоваться этим для произведения постобработки
@ -532,7 +532,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
### [[yii\base\Application::EVENT_BEFORE_ACTION|EVENT_BEFORE_ACTION]] <span id="beforeAction"></span>
Событие возникает *до* того как будет выполнено [действие контроллера](structure-controllers.md).
Событие возникает *до* того, как будет выполнено [действие контроллера](structure-controllers.md).
Настоящее имя события - `beforeAction`.
Событие является объектом [[yii\base\ActionEvent]]. Обработчик события может устанавливать
@ -571,7 +571,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
[
'on afterAction' => function ($event) {
if (некоторое условие) {
// modify $event->result
// обрабатываем $event->result
} else {
}
},

6
docs/guide-ru/structure-controllers.md

@ -188,7 +188,7 @@ ID контроллеров также могут содержать префи
## Создание действий <span id="creating-actions"></span>
Создание действий не представляет сложностей также как и объявление так называемых *методов действий* в классе контроллера. Метод действия
Создание действий не представляет сложностей так же как и объявление так называемых *методов действий* в классе контроллера. Метод действия
это *public* метод, имя которого начинается со слова `action`. Возвращаемое значение метода действия представляет собой ответные данные,
которые будут высланы конечному пользователю. Приведенный ниже код определяет два действия `index` и `hello-world`:
@ -305,7 +305,7 @@ class HelloWorldAction extends Action
в качестве ответа.
* Для [[yii\web\Application|Веб приложений]], возвращаемое значение также может быть произвольными данными, которые будут
присвоены [[yii\web\Response::data]], а затем сконвертированы в строку, представляющую тело ответа.
присвоены [[yii\web\Response::data]], а затем конвертированы в строку, представляющую тело ответа.
* Для [[yii\console\Application|Консольных приложений]], возвращаемое значение также может быть числом, представляющим
[[yii\console\Response::exitStatus|статус выхода]] исполнения команды.
@ -367,7 +367,7 @@ public function actionView(array $id, $version = null)
Теперь, если запрос будет содержать URL `http://hostname/index.php?r=post/view&id[]=123`, то параметр `$id` примет значение
`['123']`. Если запрос будет содержать URL `http://hostname/index.php?r=post/view&id=123`, то параметр `$id` все равно будет
содержать массив, т. к. скалярное значение `'123'` будет автоматически сконвертировано в массив.
содержать массив, т. к. скалярное значение `'123'` будет автоматически конвертировано в массив.
Вышеприведенные примеры в основном показывают как параметры действий работают для Веб приложений. Больше информации
о параметрах консольных приложений представлено в секции [Консольные команды](tutorial-console.md).

8
docs/guide-ru/structure-models.md

@ -143,7 +143,7 @@ $model = new User(['scenario' => User::SCENARIO_LOGIN]);
```
По умолчанию сценарии, поддерживаемые моделью, определяются [правилами валидации](#validation-rules) объявленными
в модели. Однако, Вы можете изменить это поведение путем переопределения метода [[yii\base\Model::scenarios()]] как показано ниже:
в модели. Однако Вы можете изменить это поведение путем переопределения метода [[yii\base\Model::scenarios()]] как показано ниже:
```php
namespace app\models;
@ -169,7 +169,7 @@ class User extends ActiveRecord
Метод `scenarios()` возвращает массив, ключами которого являются имена сценариев, а значения - соответствующие *активные атрибуты*. Активные атрибуты могут быть [массово присвоены](#massive-assignment) и подлежат [валидации](#validation-rules). В приведенном выше примере, атрибуты `username` и `password` это активные атрибуты сценария `login`, а в сценарии `register` так же активным атрибутом является `email` вместе с `username` и `password`.
По умолчанию реализация `scenarios()` вернёт все найденные сценарии в правилах валидации задекларированных в методе [[yii\base\Model::rules()]]. При переопределении метода `scenarios()`, если Вы хотите ввести новые сценарии помимо стандартных, Вы можете написать код на основе следующего примера:
По умолчанию реализация `scenarios()` вернёт все найденные сценарии в правилах валидации, задекларированных в методе [[yii\base\Model::rules()]]. При переопределении метода `scenarios()`, если Вы хотите ввести новые сценарии помимо стандартных, Вы можете написать код на основе следующего примера:
```php
namespace app\models;
@ -326,14 +326,14 @@ $model->secret = $secret;
Часто нужно экспортировать модели в различные форматы. Например, может потребоваться преобразовать коллекцию моделей в JSON или Excel формат. Процесс экспорта может быть разбит на два самостоятельных шага. На первом этапе модели преобразуются в массивы; на втором этапе массивы преобразуются в целевые форматы. Вы можете сосредоточиться только на первом шаге потому, что второй шаг может быть достигнут путем универсального инструмента форматирования данных, такого как [[yii\web\JsonResponseFormatter]].
Самый простой способ преобразования модели в массив - использовать свойство [[yii\base\Model::$attributes]].
Например,
Например
```php
$post = \app\models\Post::findOne(100);
$array = $post->attributes;
```
По умолчанию, свойство [[yii\base\Model::$attributes]] возвращает значения *всех* атрибутов объявленных в [[yii\base\Model::attributes()]].
По умолчанию свойство [[yii\base\Model::$attributes]] возвращает значения *всех* атрибутов объявленных в [[yii\base\Model::attributes()]].
Более гибкий и мощный способ конвертирования модели в массив - использовать метод [[yii\base\Model::toArray()]]. Его поведение по умолчанию такое же как и у [[yii\base\Model::$attributes]]. Тем не менее, он позволяет выбрать, какие элементы данных, называемые *полями*, поставить в результирующий массив и как они должны быть отформатированы. На самом деле, этот способ экспорта моделей по умолчанию применяется при разработке в RESTful Web service, как описано в [Response Formatting](rest-response-formatting.md).

2
docs/guide-ru/structure-modules.md

@ -1,7 +1,7 @@
Модули
=======
Модули - это законченные программные блоки, состоящие из [моделей](structure-models.md), [представлений](structure-views.md), [контроллеров](structure-controllers.md) и других вспомогательных компонентов. При установке модулей в [приложение](structure-applications.md), конечный пользователь получает доступ к их контроллерам. По этой причине модули часто рассматриваются как миниатюрные приложения. В отличии от [приложений](structure-applications.md), модули нельзя развертывать отдельно. Модули должны находиться внутри приложений.
Модули - это законченные программные блоки, состоящие из [моделей](structure-models.md), [представлений](structure-views.md), [контроллеров](structure-controllers.md) и других вспомогательных компонентов. При установке модулей в [приложение](structure-applications.md), конечный пользователь получает доступ к их контроллерам. По этой причине модули часто рассматриваются как миниатюрные приложения. В отличие от [приложений](structure-applications.md), модули нельзя развертывать отдельно. Модули должны находиться внутри приложений.
## Создание модулей <span id="creating-modules"></span>

2
docs/guide-ru/test-environment-setup.md

@ -14,7 +14,7 @@ Yii 2 официально поддерживает интеграцию с фр
[`yii2-basic`](https://github.com/yiisoft/yii2-app-basic) и
[`yii2-advanced`](https://github.com/yiisoft/yii2-app-advanced).
Для того, чтобы запустить тесты необходимо установить [Codeception](https://github.com/Codeception/Codeception).
Для того, чтобы запустить тесты, необходимо установить [Codeception](https://github.com/Codeception/Codeception).
Сделать это можно как локально, то есть только для текущего проекта, так и глобально для компьютера разработчика.
Для локальной установки используйте следующие команды:

2
docs/guide-ru/test-fixtures.md

@ -11,7 +11,7 @@
загружаете один или несколько объектов фикстур перед запуском теста и выгружаете их после его завершения.
Фикстура может зависеть от других фикстур, заданных через свойство [[yii\test\Fixture::depends]].
Когда фикстура загружается, фикстуры от которых она зависит будут автоматически загружены ДО нее, а когда она
Когда фикстура загружается, фикстуры, от которых она зависит, будут автоматически загружены ДО нее, а когда она
выгружается все зависимые фикстуры будут выгружены ПОСЛЕ нее.

2
docs/guide-ru/test-overview.md

@ -14,7 +14,7 @@
Процесс разработки фичи следующий:
- Создать новый тест, который описывает функцию, которая будет реализована.
- Создать новый тест, описывающий функцию, которая будет реализована.
- Запустить новый тест и убедиться, что он терпит неудачу. Это ожидаемо, т.к. на данный момент еще нет конкретной реализации.
- Написать простой код, чтобы новый тест отрабатывал без ошибок.
- Запустить все тесты и убедиться, что они отрабатывают без ошибок

4
docs/guide-ru/tutorial-i18n.md

@ -497,7 +497,7 @@ class TranslationEventHandler
Переводы могут храниться в [[yii\i18n\PhpMessageSource|PHP-файлах]], [[yii\i18n\GettextMessageSource|файлах .po]] или в [[yii\i18n\DbMessageSource|базе данных]]. См. соответствующие классы для дополнительных опций.
Прежде всего, вам необходимо создать конфигурационный файл. Решите где вы хотите хранить его и затем выполните команду
Прежде всего, вам необходимо создать конфигурационный файл. Решите, где вы хотите хранить его и затем выполните команду
```bash
./yii message/config-template path/to/config.php
@ -557,7 +557,7 @@ class TranslationEventHandler
Для работы с большей частью функций интернационализации Yii использует [PHP-расширение intl](https://secure.php.net/manual/ru/book.intl.php).
Например, это расширение используют классы, отвечающие за форматирование чисел и дат [[yii\i18n\Formatter]] и за форматирование
строк [[yii\i18n\MessageFormatter]]. Оба класса поддерживают базовый функционал даже в том случае, если расширение `intl` не
установлено. Однако, этот запасной вариант более-менее будет работать только для сайтов на английском языке, хотя даже для
установлено. Однако этот запасной вариант более или менее будет работать только для сайтов на английском языке, хотя даже для
них большая часть широких возможностей расширения `intl` не будет доступна, поэтому его установка настоятельно рекомендуется.
[PHP-расширение intl](https://secure.php.net/manual/ru/book.intl.php) основано на [библиотеке ICU](http://site.icu-project.org/), которая

6
docs/guide-ru/tutorial-performance-tuning.md

@ -19,7 +19,7 @@
При запуске приложения в производственном режиме, вам нужно отключить режим отладки. Yii использует значение константы
`YII_DEBUG` чтобы указать, следует ли включить режим отладки. Когда режим отладки включен, Yii тратит дополнительное
время чтобы создать и записать отладочную информацию.
время, чтобы создать и записать отладочную информацию.
Вы можете разместить следующую строку кода в начале [входного скрипта](structure-entry-scripts.md) чтобы
отключить режим отладки:
@ -154,7 +154,7 @@ CREATE TABLE session (
## Использование обычных массивов <span id="using-arrays"></span>
Хотя [Active Record](db-active-record.md) очень удобно использовать, это не так эффективно, как использование простых
массивов, когда вам нужно получить большое количество данных из БД. В этом случае, вы можете вызвать `asArray()` при
массивов, когда вам нужно получить большое количество данных из БД. В этом случае вы можете вызвать `asArray()` при
использовании Active Record для получения данных, чтобы извлеченные данные были представлены в виде массивов вместо
громоздких записей Active Record. Например,
@ -189,7 +189,7 @@ composer dumpautoload -o
## Асинхронная обработка данных <span id="processing-data-offline"></span>
Когда запрос включает в себя некоторые ресурсоемкие операции, вы должны подумать о том, чтобы выполнить эти операции
Когда запрос включает в себя некоторые ресурсоёмкие операции, вы должны подумать о том, чтобы выполнить эти операции
асинхронно, не заставляя пользователя ожидать их окончания.
Существует два метода асинхронной обработки данных: pull и push.

2
docs/guide-ru/tutorial-yii-as-micro-framework.md

@ -122,7 +122,7 @@ micro-app/
## Создание REST API
Чтобы продемонстрировать использование нашей "микроархитектуры" мы создадим простой REST API для сообщений.
Чтобы продемонстрировать использование нашей "микроархитектуры", мы создадим простой REST API для сообщений.
Чтобы этот API обслуживал некоторые данные, нам нужна база данных. Добавим конфигурацию подключения базы данных
к конфигурации приложения:

Loading…
Cancel
Save