Skip to content

Commit

Permalink
Merge pull request yiisoft#8482 from vyachin/fix-guide-ru-2
Browse files Browse the repository at this point in the history
Fix guide ru 2 [skip ci]
  • Loading branch information
samdark committed May 19, 2015
2 parents e3735d3 + 55885c5 commit c54eced
Showing 9 changed files with 34 additions and 34 deletions.
24 changes: 12 additions & 12 deletions docs/guide-ru/db-query-builder.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Построитель запросов
====================

Построеный поверх [DAO](db-dao.md), построитель запросов позволяет конструировать SQL выражения в программируемом и
Построенный поверх [DAO](db-dao.md), построитель запросов позволяет конструировать SQL выражения в программируемом и
независимом от СУБД виде. В сравнении с написанием чистого SQL, использование построителя помогает вам писать
более читаемый связанный с SQL код и генерировать более безопасные SQL выражения.

@@ -86,7 +86,7 @@ $query->select(['user_id' => 'user.id', 'email']);
$query->select(["CONCAT(first_name, ' ', last_name) AS full_name", 'email']);
```

Начиная с версии 2.0.1, вы также можете использовать подзапросы. Вы должны указывть каждый подзапрос в выражении как
Начиная с версии 2.0.1, вы также можете использовать подзапросы. Вы должны указывать каждый подзапрос в выражении как
объект [[yii\db\Query]]. Например:

```php
@@ -169,7 +169,7 @@ $query->where('status=:status', [':status' => $status]);
```

Не встраивайте переменные непосредственно в условие, особенно если значение переменной получено от пользователя,
потому что это делает ваше приложение подверженым атакам через SQL инъекции.
потому что это делает ваше приложение подверженным атакам через SQL инъекции.

```php
// Опасность! Не делайте так если вы не уверены, что $status это действительно число.
@@ -200,7 +200,7 @@ $query->where([
]);
```

Как вы можете видеть, построитель запросов достаточно умён, чтобы правильно обрабатывать значения NULL или массивов.
Как вы можете видеть, построитель запросов достаточно умен, чтобы правильно обрабатывать значения NULL или массивов.

Вы также можете использовать подзапросы:

@@ -303,9 +303,9 @@ if (!empty($search)) {

#### Условия для фильтров <span id="filter-conditions"></span>

Когда условие `WHERE` формируется на основе пользовательского ввода, обычно хочется проигнорироват незаданные значения.
Когда условие `WHERE` формируется на основе пользовательского ввода, обычно хочется проигнорировать не заданные значения.
Например, в форме поиска, которая позволяет осуществлять поиск по имени пользователя или email, вы хотели бы игнорировать
username/email условие, если пользователь ничего не ввёл в поле ввода. Вы можете достич этого используя метод
username/email условие, если пользователь ничего не ввёл в поле ввода. Вы можете достичь этого используя метод
[[yii\db\Query::filterWhere()|filterWhere()]].

```php
@@ -316,13 +316,13 @@ $query->filterWhere([
]);
```

Единственное отличие межде [[yii\db\Query::filterWhere()|filterWhere()]] и [[yii\db\Query::where()|where()]]
Единственное отличие между [[yii\db\Query::filterWhere()|filterWhere()]] и [[yii\db\Query::where()|where()]]
заключается в игнорировании пустых значений переданных в условие в [форме массива](#hash-format). Таким образом
если `$email` будет пустым, а `$username` нет, то приведённый выше код сформирует `...WHERE username=:username`.

> Информация: значение признаётся пустым, если это null, пустой массив, пустая строка или строка состоящая из одних пробельных символов.
Таже вместо [[yii\db\Query::andWhere()|andWhere()]] и [[yii\db\Query::orWhere()|orWhere()]], вы можете использовать
Также вместо [[yii\db\Query::andWhere()|andWhere()]] и [[yii\db\Query::orWhere()|orWhere()]], вы можете использовать
[[yii\db\Query::andFilterWhere()|andFilterWhere()]] и [[yii\db\Query::orFilterWhere()|orFilterWhere()]]
для добавления дополнительных условий фильтрации.

@@ -421,7 +421,7 @@ $query->limit(10)->offset(20);
Если вы определяете неправильный limit или offset (например отрицательное значение), они будут проигнорированы.

> Информация: Для СУБД, которые не поддерживают `LIMIT` и `OFFSET` (такие как MSSQL), построитель запросов будет
генерировать SQL выражения, которые эмулируют поведение `LIMIT`/`OFFSET`.
генерировать SQL выражения, которые эмулирует поведение `LIMIT`/`OFFSET`.


### [[yii\db\Query::join()|join()]] <span id="join"></span>
@@ -491,7 +491,7 @@ $query1->union($query2);

[[yii\db\Query]] предоставляет целый набор методов для разных вариантов выборки:

- [[yii\db\Query::all()|all()]]: возвращает массив строк, какждая из которых это ассоциативный массив пар ключ-значение.
- [[yii\db\Query::all()|all()]]: возвращает массив строк, каждая из которых это ассоциативный массив пар ключ-значение.
- [[yii\db\Query::one()|one()]]: возвращает первую строку запроса.
- [[yii\db\Query::column()|column()]]: возвращает первый столбец результата.
- [[yii\db\Query::scalar()|scalar()]]: возвращает скалярное значение первого столбца первой строки результата.
@@ -518,7 +518,7 @@ $row = (new \yii\db\Query())
```

> Примечание: метод [[yii\db\Query::one()|one()]] вернёт только первую строку результата запроса. Он НЕ добавляет
`LIMIT 1` в генерируемый SQL. Это хорошо и предпочтительно если вы знаете, что запрос вернёт только одны или несколько
`LIMIT 1` в генерируемый SQL. Это хорошо и предпочтительно если вы знаете, что запрос вернёт только одну или несколько
строк данных (например, при запросе по первичному ключу). Однако, если запрос потенциально может вернут много
строк данных, вы должны вызвать `limit(1)` для повышения производительности, Например:
`(new \yii\db\Query())->from('user')->limit(1)->one()`.
@@ -542,7 +542,7 @@ $count = (new \yii\db\Query())
* Создаёт объект [[yii\db\Command]] с сгенерированным SQL запросом;
* Вызывается выбирающий метод (например `queryAll()`) из [[yii\db\Command]] для выполнения SQL запроса и извлечения данных.

Иногда вы можете захотеть увидеть или испрользовать SQL запрос построенный из объекта [[yii\db\Query]]. Этой цели можно
Иногда вы можете захотеть увидеть или использовать SQL запрос построенный из объекта [[yii\db\Query]]. Этой цели можно
добиться с помощью следующего кода:

```php
2 changes: 1 addition & 1 deletion docs/guide-ru/structure-extensions.md
Original file line number Diff line number Diff line change
@@ -315,7 +315,7 @@ class MyBootstrapClass implements BootstrapInterface
отображает содержимое конечному пользователю, вы должны попробовать
[интернационализовать и локализовать](tutorial-i18n.md) его. В частности,

- Если расширение отображает сообщения, предназначенные для конечных пользователей, сообщения должны быть обёрнуты в
- Если расширение отображает сообщения, предназначенные для конечных пользователей, сообщения должны быть обернуты в
метод `Yii::t()` так, чтобы они могли быть переведены. Сообщения, предназначенные для разработчиков (например,
внутренние сообщения исключений), не нужно переводить.
- Если расширение отображает числа, даты и т.п., они должны быть отформатированы, используя [[yii\base\Formatter]] с
4 changes: 2 additions & 2 deletions docs/guide-ru/structure-filters.md
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ public function behaviors()

При создании нового фильтра действия, необходимо наследоваться от [[yii\base\ActionFilter]] и переопределить методы
[[yii\base\ActionFilter::beforeAction()|beforeAction()]] и/или [[yii\base\ActionFilter::afterAction()|afterAction()]].
Первый из них будет вызыван перед выполнением действия, а второй после. Возвращаемое
Первый из них будет вызван перед выполнением действия, а второй после. Возвращаемое
[[yii\base\ActionFilter::beforeAction()|beforeAction()]] значение определяет, будет ли действие выполняться или нет.
Если вернётся `false`, то оставшиеся фильтры не будут применены и действие выполнено не будет.

@@ -286,7 +286,7 @@ public function behaviors()

Ограничитель количества запросов в единицу времени *(RateLimiter)* реализует алгоритм ограничения запросов, основанный на
[алгоритме leaky bucket](http://en.wikipedia.org/wiki/Leaky_bucket). В основном, он используется при создании RESTful API.
Подробнее об использовании данного фильтра пожно прочитать в разделе [Ограничение запросов](rest-rate-limiting.md).
Подробнее об использовании данного фильтра можно прочитать в разделе [Ограничение запросов](rest-rate-limiting.md).


### [[yii\filters\VerbFilter|VerbFilter]] <span id="verb-filter"></span>
6 changes: 3 additions & 3 deletions docs/guide-ru/structure-models.md
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@

Вы можете создавать классы моделей путём расширения класса [[yii\base\Model]] или его дочерних классов. Базовый класс [[yii\base\Model]] поддерживает много полезных функций:

* [Атрибуты](#attributes): представляют собой рабочие данные и могут быть доступны как обычные свойства объекта или элементы массыва;
* [Атрибуты](#attributes): представляют собой рабочие данные и могут быть доступны как обычные свойства объекта или элементы массива;
* [Метки атрибутов](#attribute-labels): задают отображение атрибута;
* [Массовое присвоение](#massive-assignment): поддержка заполнения нескольких атрибутов в один шаг;
* [Правила проверки](#validation-rules): обеспечивают ввод данных на основе заявленных правил проверки;
@@ -128,7 +128,7 @@ public function attributeLabels()
## Сценарии <span id="scenarios"></span>

Модель может быть использованна в различных *сценариях*. Например, модель `User` может быть использованна для коллекции входных логинов пользователей, а также может быть использованна для цели регистрации пользователей.
Модель может быть использована в различных *сценариях*. Например, модель `User` может быть использована для коллекции входных логинов пользователей, а также может быть использована для цели регистрации пользователей.
В различных сценариях, модель может использовать различные бизнес-правила и логику. Например, атрибут `email` может потребоваться во время регистрации пользователя, но не во время входа пользователя в систему.

Модель использует свойство [[yii\base\Model::scenario]], чтобы отслеживать сценарий, в котором она используется. По умолчанию, модель поддерживает только один сценарий с именем `default`. В следующем коде показано два способа установки сценария модели:
@@ -267,7 +267,7 @@ $model->body = isset($data['body']) ? $data['body'] : null;

### Безопасные Атрибуты <span id="safe-attributes"></span>

Массовое присвоение применяется только к так называемым *безопасным атрибутам*, которые являются атрибутами, перечисленными в [[yii\base\Model::scenarios()]] в текущем сценарии [[yii\base\Model::scenario|scenario]] модели. Например, если модель `User` имеет следующий заданный сценарий, в данном случае это сценарий `login`, то только `username` и `password` могут быть массово присвоены. Любые другие атрибуты остануться нетронутыми.
Массовое присвоение применяется только к так называемым *безопасным атрибутам*, которые являются атрибутами, перечисленными в [[yii\base\Model::scenarios()]] в текущем сценарии [[yii\base\Model::scenario|scenario]] модели. Например, если модель `User` имеет следующий заданный сценарий, в данном случае это сценарий `login`, то только `username` и `password` могут быть массово присвоены. Любые другие атрибуты останутся нетронутыми.

```php
public function scenarios()
2 changes: 1 addition & 1 deletion docs/guide-ru/structure-views.md
Original file line number Diff line number Diff line change
@@ -69,7 +69,7 @@ use yii\helpers\HtmlPurifier;
</div>
```

> Совет: Несмотря на то, что HTMLPurifier отлично справляется с тем, чтобы сделать вывод безопасным, работает он довольно медленно. Если от приложения требуется высокая производительность, рассмотрите возможность [кэширования](caching-overview.md) отфитрованного результата
> Совет: Несмотря на то, что HTMLPurifier отлично справляется с тем, чтобы сделать вывод безопасным, работает он довольно медленно. Если от приложения требуется высокая производительность, рассмотрите возможность [кэширования](caching-overview.md) отфильтрованного результата

### Организация видов <span id="organizing-views"></span>
6 changes: 3 additions & 3 deletions docs/guide-ru/tutorial-advanced-app.md
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@
php /path/to/yii-application/init
```
Для производственных серверов удобно выполнять данную команду в неинтерактивном режиме.
Для производственных серверов удобно выполнять данную команду в не интерактивном режиме.
```
php /path/to/yii-application/init --env=Production overwrite=All
@@ -86,7 +86,7 @@
- `@backend` - директория веб-приложения backend.
- `@console` - директория console.
- `@runtime` - директория runtime исполняемого приложения.
- `@vendor` - директория vendor, содержащая пакеты загруженые Composer'ом.
- `@vendor` - директория vendor, содержащая пакеты загруженные Composer'ом.
- `@bower` - директория vendor, содержащая [пакеты bower](http://bower.io/).
- `@npm` - директория vendor, содержащая [пакеты npm](https://www.npmjs.org/).
- `@web` - базовый URL исполняемого веб-приложения.
@@ -98,7 +98,7 @@
Приложения
----------
В шаблоне advanced три приложения: frontend, backend и console. Frontend это та часть приложения, которае обеспечивает
В шаблоне advanced три приложения: frontend, backend и console. Frontend это та часть приложения, которая обеспечивает
взаимодействие системы с конечным пользователем проекта. Backend это административная панель, аналитика и прочая подобная
функциональность. Console обычно используется для выполнения заданий по расписанию через cron, низкоуровневого
управления сервером, при развёртывании приложения, работы с миграциями и ресурсами.
Loading

0 comments on commit c54eced

Please sign in to comment.