mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-15 05:45:33 +08:00
Merge pull request #8482 from vyachin/fix-guide-ru-2
Fix guide ru 2 [skip ci]
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -315,7 +315,7 @@ class MyBootstrapClass implements BootstrapInterface
|
||||
отображает содержимое конечному пользователю, вы должны попробовать
|
||||
[интернационализовать и локализовать](tutorial-i18n.md) его. В частности,
|
||||
|
||||
- Если расширение отображает сообщения, предназначенные для конечных пользователей, сообщения должны быть обёрнуты в
|
||||
- Если расширение отображает сообщения, предназначенные для конечных пользователей, сообщения должны быть обернуты в
|
||||
метод `Yii::t()` так, чтобы они могли быть переведены. Сообщения, предназначенные для разработчиков (например,
|
||||
внутренние сообщения исключений), не нужно переводить.
|
||||
- Если расширение отображает числа, даты и т.п., они должны быть отформатированы, используя [[yii\base\Formatter]] с
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -69,7 +69,7 @@ use yii\helpers\HtmlPurifier;
|
||||
</div>
|
||||
```
|
||||
|
||||
> Совет: Несмотря на то, что HTMLPurifier отлично справляется с тем, чтобы сделать вывод безопасным, работает он довольно медленно. Если от приложения требуется высокая производительность, рассмотрите возможность [кэширования](caching-overview.md) отфитрованного результата
|
||||
> Совет: Несмотря на то, что HTMLPurifier отлично справляется с тем, чтобы сделать вывод безопасным, работает он довольно медленно. Если от приложения требуется высокая производительность, рассмотрите возможность [кэширования](caching-overview.md) отфильтрованного результата
|
||||
|
||||
|
||||
### Организация видов <span id="organizing-views"></span>
|
||||
|
||||
@@ -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, низкоуровневого
|
||||
управления сервером, при развёртывании приложения, работы с миграциями и ресурсами.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Консольное приложение
|
||||
=====================
|
||||
|
||||
Кроме богатых возможностей для построеня веб приложений, Yii также имеет полноценную поддержку консольных приложений,
|
||||
Кроме богатых возможностей для построения веб приложений, Yii также имеет полноценную поддержку консольных приложений,
|
||||
которые обычно используются для создания фоновых и служебных задач, поддерживающих сайт.
|
||||
|
||||
Структура консольных приложений очень похожа на структуру веб приложения. Она состоит из одного и более классов
|
||||
@@ -49,7 +49,7 @@ yii <route> [--option1=value1 --option2=value2 ... argument1 argument2 ...]
|
||||
yii migrate/up 5 --migrationTable=migrations
|
||||
```
|
||||
|
||||
> **Примечание**: При использовании в консоли `*`, не забудте поместить её в кавычки `"*"` чтобы избежать её интерпретации
|
||||
> **Примечание**: При использовании в консоли `*`, не забудьте поместить её в кавычки `"*"` чтобы избежать её интерпретации
|
||||
> и замены на все имена файлов в данной директории.
|
||||
|
||||
|
||||
@@ -110,10 +110,10 @@ exit($exitCode);
|
||||
> ```
|
||||
|
||||
|
||||
Создание ваших собственных комманд <span id="create-command"></span>
|
||||
Создание ваших собственных команд <span id="create-command"></span>
|
||||
----------------------------------
|
||||
|
||||
### Консолный контроллер и действие
|
||||
### Консольный контроллер и действие
|
||||
|
||||
Консольная команда определяется как класс контроллера расширяющий [[yii\console\Controller]]. В классе контроллера,
|
||||
вы определяете одно или несколько действий, которые соответствуют суб-командам контроллера. В каждом действии
|
||||
@@ -128,18 +128,18 @@ exit($exitCode);
|
||||
|
||||
Для переопределения [[yii\console\Controller::options()]] метода, вы можете указать опции, которые доступны в консольной
|
||||
команде (controller/actionID). Метод должен возвращать список публичных атрибутов класса. При запуске команды вы
|
||||
можете указать значение опций, используя синтаксис `--OptionName=OptionValue`. Это свяжет `OptionValue` с аттрибутом
|
||||
можете указать значение опций, используя синтаксис `--OptionName=OptionValue`. Это свяжет `OptionValue` с атрибутом
|
||||
`OptionName` класса контроллера.
|
||||
|
||||
Если значение по умолчанию опции - это массив, то при установке этой опции, при выполнении команды, значение бедет
|
||||
Если значение по умолчанию опции - это массив, то при установке этой опции, при выполнении команды, значение будет
|
||||
преобразовано в массив путём разделения входящей строки по запятым.
|
||||
|
||||
### Аргументы
|
||||
|
||||
Кроме опций, команда может получать аргументы. Аргументы будут переданы в качестве параметров в метод действия,
|
||||
соответствующего запрошеной суб-команде. Первый аргумент соответствует первому параметру, второй соответственно второму,
|
||||
соответствующего запрошенной суб-команде. Первый аргумент соответствует первому параметру, второй соответственно второму,
|
||||
и так далее. Если переданных аргументов при вызове команды будет недостаточно, то параметрам будут назначены по
|
||||
умолчанию, если они определены. Если значения по умолчанию не определены, и не былы переданы, команда завершит
|
||||
умолчанию, если они определены. Если значения по умолчанию не определены, и не были переданы, команда завершит
|
||||
выполнение с ошибкой.
|
||||
|
||||
Вы можете использовать указание типа `array`, чтобы указать что аргумент должен рассматриваться как массив. Массив
|
||||
@@ -172,7 +172,7 @@ class ExampleController extends \yii\console\Controller
|
||||
Для примера `1` может указывать на неизвестную ошибку, а все коды выше могут быть зарезервированы под специфичные
|
||||
ошибки: ошибки ввода, повреждённые файлы, и что-то другое.
|
||||
|
||||
Для того, чтобы ваша консольная команда возвращала код возврата, прочто верните целое число в методе действия контроллера:
|
||||
Для того, чтобы ваша консольная команда возвращала код возврата, просто верните целое число в методе действия контроллера:
|
||||
|
||||
```php
|
||||
public function actionIndex()
|
||||
@@ -195,7 +195,7 @@ public function actionIndex()
|
||||
|
||||
### Форматирование и цвета
|
||||
|
||||
Консоль Yii поддерживает форматирование вывода, который автоматически деградирует до неформатированного, если это поддерживается
|
||||
Консоль Yii поддерживает форматирование вывода, который автоматически деградирует до не форматированного, если это поддерживается
|
||||
в терминале где запускается команда.
|
||||
|
||||
Вывод форматированных строк прост. Вот как можно вывести некоторый жирный текст:
|
||||
|
||||
@@ -313,7 +313,7 @@ function foo($model, $attribute) {
|
||||
]
|
||||
```
|
||||
|
||||
Этот валидатор проверяет, что вхоящее значение соответствует одному из значений, указанных в `range`.
|
||||
Этот валидатор проверяет, что входящее значение соответствует одному из значений, указанных в `range`.
|
||||
|
||||
- `range`: список значений, с которыми будет сравниваться входящее значение.
|
||||
- `strict`: должно ли сравнение входящего значения со списком значений быть строгим (учитывать тип данных).
|
||||
|
||||
@@ -447,7 +447,7 @@ Yii поставляется с набором сообщений по умол
|
||||
когда источник не содержит искомой строки. Для этого следует использовать обработку события
|
||||
[[yii\i18n\MessageSource::EVENT_MISSING_TRANSLATION|missingTranslation]] компонента [[yii\i18n\MessageSource]].
|
||||
|
||||
Например, чтобы отметить все непереведённые строки, чтобы их было легче находить на странице, необходимо
|
||||
Например, чтобы отметить все не переведённые строки, чтобы их было легче находить на странице, необходимо
|
||||
создать обработчик события. Изменим конфигурацию приложения:
|
||||
|
||||
```php
|
||||
|
||||
Reference in New Issue
Block a user