Browse Source

Merge pull request #8531 from vchenin/docs_uk

docs/*uk Update Ukrainian translation [skip ci]
tags/2.0.6
Alexander Makarov 9 years ago
parent
commit
69b7f0f298
  1. 8
      docs/guide-uk/README.md
  2. 2
      docs/guide-uk/caching-fragment.md
  3. 8
      docs/guide-uk/concept-aliases.md
  4. 2
      docs/guide-uk/intro-upgrade-from-v1.md
  5. 104
      docs/guide-uk/start-databases.md
  6. 138
      docs/guide-uk/start-forms.md
  7. 82
      docs/guide-uk/start-gii.md
  8. 126
      docs/guide-uk/start-hello.md
  9. 123
      docs/guide-uk/start-installation.md
  10. 36
      docs/guide-uk/start-looking-ahead.md
  11. 79
      docs/guide-uk/start-workflow.md
  12. 6
      docs/guide-uk/structure-application-components.md
  13. 12
      docs/guide-uk/structure-applications.md
  14. 14
      docs/guide-uk/structure-controllers.md
  15. 6
      docs/guide-uk/structure-entry-scripts.md
  16. 2
      docs/guide-uk/structure-overview.md
  17. 20
      docs/guide-uk/tutorial-yii-integration.md
  18. 41
      docs/internals-uk/translation-workflow.md

8
docs/guide-uk/README.md

@ -20,7 +20,7 @@ All Rights Reserved.
* [Встановлення Yii](start-installation.md)
* [Запуск додатка](start-workflow.md)
* [Говоримо «Привіт»](start-hello.md)
* [Говоримо "Привіт"](start-hello.md)
* [Робота з формами](start-forms.md)
* [Робота з базами даних](start-databases.md)
* [Генерація коду за допомогою Gii](start-gii.md)
@ -98,7 +98,7 @@ All Rights Reserved.
------------------
* **TBD** [Форматування даних](output-formatting.md)
* **TBD** [Посторінкове розбиття](output-pagination.md)
* **TBD** [Розділення на сторінки](output-pagination.md)
* **TBD** [Сортування](output-sorting.md)
* **TBD** [Провайдери даних](output-data-providers.md)
* **TBD** [Віджети даних](output-data-widgets.md)
@ -162,14 +162,14 @@ RESTful веб-сервіси
Спеціальні теми
---------------
* **TBD** [Розширений шаблон додатка](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-uk/README.md)
* **TBD** [Розширений шаблон проекту](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-uk/README.md)
* **TBD** [Створення додатка з нуля](tutorial-start-from-scratch.md)
* **TBD** [Консольні команди](tutorial-console.md)
* **TBD** [Основні валідатори](tutorial-core-validators.md)
* **TBD** [Інтернаціоналізація](tutorial-i18n.md)
* **TBD** [Робота з поштою](tutorial-mailing.md)
* **TBD** [Вдосконалення продуктивності](tutorial-performance-tuning.md)
* **TBD** [Робота на shared хостингу](tutorial-shared-hosting.md)
* **TBD** [Робота на віртуальному хостингу](tutorial-shared-hosting.md)
* **TBD** [Шаблонізатори](tutorial-template-engines.md)
* **TBD** [Робота із стороннім кодом](tutorial-yii-integration.md)

2
docs/guide-uk/caching-fragment.md

@ -147,7 +147,7 @@ if ($this->beginCache($id1)) {
При використанні кешування фрагментів, ви можете зіткнутися із ситуацією, коли великий фрагмент змісту є відносно статичним,
за винятком одного або декількох місць. Наприклад, заголовок сторінки може відображатися у головному меню разом
з імʼям поточного користувача. Інша проблема в тому, що закешований зміст може містити код PHP, який повинен
виконуватися при кожному запиті (наприклад, код для реєстрації пакету ресурсів). Обидві ці проблеми можуть бути
виконуватися при кожному запиті (наприклад, код для реєстрації зв’язки ресурсів). Обидві ці проблеми можуть бути
вирішені за допомогою так званої функції *динамічного змісту*.
Динамічний зміст означає фрагмент виведення, який не повинен кешуватися, навіть якщо він укладений у кешування фрагментів.

8
docs/guide-uk/concept-aliases.md

@ -20,7 +20,7 @@ Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@bar', 'http://www.example.com');
```
> Примітка: псевдонім шляху до файлу або URL *не* обовʼязково вказує на існуючий файл або ресурс.
> Примітка: псевдонім шляху до файлу або URL *не* обовʼязково вказує на наявний файл або ресурс.
Використовуючи вже заданий псевдонім, ви можете отримати на основі нього новий (без виклику [[Yii::setAlias()]]),
додавши в його кінець `/`, за яким слідує один або більше сегментів шляху. Псевдоніми, визначені за допомогою
@ -108,8 +108,8 @@ $cache = new FileCache([
- `@webroot`, коренева веб-директорія поточного веб-додатку. Визначається на основі директорії розташування [вхідного скрипта](structure-entry-scripts.md).
- `@web`, базовий URL поточного додатку. Має таке ж значення, як і [[yii\web\Request::baseUrl]].
- `@vendor`, [[yii\base\Application::vendorPath|директорія vendor Composer]]. За замовчуванням `@app/vendor`.
- `@bower`, директорія, що містить [пакети bower](http://bower.io/). За замовчуванням `@vendor/bower`.
- `@npm`, директорія, що містить [пакети npm](https://www.npmjs.org/). За замовчуванням `@vendor/npm`.
- `@bower`, директорія, що містить [пакунки Bower](http://bower.io/). За замовчуванням `@vendor/bower`.
- `@npm`, директорія, що містить [пакунки NPM](https://www.npmjs.org/). За замовчуванням `@vendor/npm`.
Псевдонім `@yii` задається в момент підключення файлу `Yii.php` у [вхідному скрипті](structure-entry-scripts.md).
Решта псевдонімів задаються в конструкторі додатка в момент застосування [конфигурації](concept-configurations.md).
@ -120,7 +120,7 @@ $cache = new FileCache([
Для кожного [розширення](structure-extensions.md), що встановлюється через Composer, автоматично задається псевдонім.
Його імʼя відповідає кореневому простору імен розширення відповідно до його `composer.json`, і кожен псевдонім представляє
шлях до кореневої директорії пакета. Наприклад, якщо ви встановите розширення `yiisoft/yii2-jui`,
шлях до кореневої директорії пакунка. Наприклад, якщо ви встановите розширення `yiisoft/yii2-jui`,
то вам автоматично стане доступним псевдонім `@yii/jui`, який будет створено на етапі
[первинного завантаження (bootstrapping)](runtime-bootstrapping.md) наступним чином:

2
docs/guide-uk/intro-upgrade-from-v1.md

@ -331,7 +331,7 @@ public function behaviors()
Ресурси
-------
У Yii 2.0 представлена нова можливість *звʼязки ресурсів*, яка замінює концепт пакетів скриптів у Yii 1.1.
У Yii 2.0 представлена нова можливість *звʼязки ресурсів*, яка замінює концепт пакунків скриптів у Yii 1.1.
Звʼязка ресурсів - це колекція файлів ресурсів (наприклад: Javascript файли, CSS файли, файли зображень, і т. п.)
у певній директорії. Кожна звʼязка ресурсів представлена класом, успадкованим від [[yii\web\AssetBundle]].

104
docs/guide-uk/start-databases.md

@ -1,29 +1,30 @@
Робота з базами даних
=====================
Цей розділ описує, як створити нову сторінку, яка буде відображати дані країни, отримані з таблиці бази даних `country`.
Для цього, вам необхідно буде налаштувати зʼєднання з базою даних, створити клас [Active Record](db-active-record.md),
визначити [дію](structure-controllers.md) та створити [представлення](structure-views.md).
Цей розділ описує, як створити нову сторінку, яка буде відображати дані країни, отримані з
таблиці `country` бази даних. Для цього, вам необхідно буде налаштувати зʼєднання з базою даних,
створити клас [Active Record](db-active-record.md), визначити [дію](structure-controllers.md)
та створити [представлення](structure-views.md).
За допомогою даного посібника ви дізнаєтесь як:
В даному розділі ви дізнаєтесь як:
* Налаштувати зʼєднання з базою даних
* Оголосити Active Record класс
* Запитувати дані за допомогою класу Active Record
* Відображати дані у представленні із розбиттям по сторінках
* налаштувати зʼєднання з базою даних;
* визначити клас Active Record;
* запитувати дані за допомогою класу Active Record;
* відображати дані у представленні із розділенням на сторінки.
Зверніть увагу, що для того, щоб закінчити цей розділ, ви повинні мати базові знання і досвід використання баз даних.
Зокрема, ви повинні знати, як створювати бази даних, як виконувати SQL-запити за допомогою клієнтських додатків баз даних.
Зокрема, ви повинні знати, як створювати бази даних та як виконувати SQL-запити за допомогою клієнтських додатків баз даних.
Підготовка бази даних <span id="preparing-database"></span>
---------------------
Для початку, створіть базу даних `yii2basic`, з якої і будете надалі отримувати дані.
Ви можете використовувати SQLite, MySQL, PostgreSQL, MSSQL або Oracle бази даних, Yii має вбудовану підтримку для багатьох баз даних.
Для простоти, будемо вважати що використовується MySQL у подальшому описі.
Ви можете створити базу даних SQLite, MySQL, PostgreSQL, MSSQL або Oracle, Yii має вбудовану підтримку для багатьох баз даних.
Для простоти, у подальшому описі будемо вважати що використовується MySQL.
Далі, створіть таблицю `country`, і внесіть декілька прикладів. Можете використати наступний SQL-запит, як приклад:
Далі, створіть таблицю `country` у базі даних, і внесіть декілька зразків даних. Можете використати наступний SQL-запит, як приклад:
```sql
CREATE TABLE `country` (
@ -44,15 +45,16 @@ INSERT INTO `country` VALUES ('RU','Russia',146934000);
INSERT INTO `country` VALUES ('US','United States',278357000);
```
На даний момент, у вас є база даних `yii2basic` і таблиця `country` з трьома колонками, що містять десять рядків даних.
На даний момент, у вас є база даних `yii2basic` і таблиця `country` з трьома колонками, що містить десять рядків даних.
Налаштування підключення до БД <span id="configuring-db-connection"></span>
------------------------------
Перш ніж продовжити, переконайтеся, що у вас налаштовано [PDO](http://www.php.net/manual/en/book.pdo.php) PHP розширення
і PDO драйвер для вашої БД (наприклад `pdo_mysql` для MySQL). Це є основною вимогою, якщо ваш додаток використовує реляційну базу даних.
Перш ніж продовжити, переконайтеся, що у вас встановлено розширення PHP [PDO](http://www.php.net/manual/en/book.pdo.php)
та драйвер PDO для вашої БД (наприклад `pdo_mysql` для MySQL). Це є основною вимогою,
якщо ваш додаток використовує реляційну базу даних.
Згідно того, що у вас встановлено, відкрийте файл `config/db.php` і замініть на коректні дані вашої БД.
Коли вони встановлені, відкрийте файл `config/db.php` і змініть параметри для відповідності вашій БД.
За замовчуванням, файл містить наступне:
```php
@ -68,21 +70,21 @@ return [
```
Файл конфігурації `config/db.php` є типовим інструментом [налаштування](concept-configurations.md) на основі файлів.
Даний файл конфігурації визначає параметри, які необхідні для створення і ініціалізації [[yii\db\Connection]] примірника,
через який ви можете робити SQL-запити до основної бази даних.
Даний файл конфігурації визначає параметри, які необхідні для створення та ініціалізації екземпляру [[yii\db\Connection]],
через який ви можете робити SQL-запити до зазначеної бази даних.
З’єднання з БД, описане вище, може бути доступне в коді додатка за допомогою виразу `Yii::$app->db`.
> Інформація: Файл конфігурації `config/db.php` буде включений до конфігурації головного додатка `config/web.php`,
який визначає як має бути проініційований сам [додаток](structure-applications.md). Для отримання додаткової інформації,
будь ласка, зверніться до розділу [Налаштування](concept-configurations.md).
який визначає як має бути проініціалізований екземпляр [додатку](structure-applications.md).
Для отримання додаткової інформації, будь ласка, зверніться до розділу [Конфігурації](concept-configurations.md).
Створення Active Record <span id="creating-active-record"></span>
-----------------------
Для відображення і отримання даних з таблиці `country` створіть [Active Record](db-active-record.md) клас
з іменем `Country`, і збережіть в файл `models/Country.php`.
Для презентування та отримання даних з таблиці `country` створіть похідний від [Active Record](db-active-record.md)
клас з іменем `Country`, і збережіть його в файл `models/Country.php`.
```php
<?php
@ -99,10 +101,10 @@ class Country extends ActiveRecord
Клас `Country` наслідує [[yii\db\ActiveRecord]]. Вам не потрібно писати ніякого коду всередині нього!
Всього лише за допомогою описаного вище коду, Yii самостійно вгадає відповідне імʼя таблиці з імені класу.
> Інформація: Якщо немає прямого співпадіння з імені класу і таблиці,
ви можете використати метод [[yii\db\ActiveRecord::tableName()]] щоб задати відповідне імʼя таблиці.
> Інформація: Якщо неможливо отримати прямої відповідності імені класу до імені таблиці, ви можете
перевизначити метод [[yii\db\ActiveRecord::tableName()]], щоб точно задати відповідне імʼя таблиці.
Використовуючи клас `Country`, ви можете легко маніпулювати даними з таблиці `country`, як показано в наступному фрагменті:
Використовуючи клас `Country`, ви можете легко маніпулювати даними з таблиці `country`, як показано у цих фрагментах коду:
```php
use app\models\Country;
@ -116,12 +118,12 @@ $country = Country::findOne('US');
// відобразити "United States"
echo $country->name;
// оновити назву країни на "U.S.A." і зберегти в БД
// змінити назву країни на "U.S.A." і зберегти в БД
$country->name = 'U.S.A.';
$country->save();
```
> Інформація: Active Record є потужним засобом для доступу і управління даними в базі даних в обʼєктно-орієнтованому стилі.
> Інформація: Active Record є потужним засобом для доступу і управління даними бази даних в обʼєктно-орієнтованому стилі.
Ви можете знайти більш детальну інформацію в розділі [Active Record](db-active-record.md). Крім того, ви також можете
взаємодіяти з базою даних, використовуючи для доступу метод передачі даних нижнього рівня під назвою [Data Access Objects](db-dao.md).
@ -168,23 +170,25 @@ class CountryController extends Controller
Збережіть цей код у файл `controllers/CountryController.php`.
Дія `index` викликає метод `Country::find()`. Цей метод Active Record будує запит бази даних і отримує всі дані з таблиці `country`.
Щоб обмежити кількість країн, які будуть отримуватись в кожному запиті, сам запит розбивається на сторінки, за допомогою об’єкта
Дія `index` викликає метод `Country::find()`. Цей метод Active Record будує запит до бази даних і отримує всі дані з таблиці `country`.
Щоб обмежити кількість країн, які будуть отримуватись в кожному запиті, сам запит розділяється на сторінки, за допомогою об’єкта
[[yii\data\Pagination]]. Об’єкт `Pagination` служить двом цілям:
* Встановлює `offset` і `limit` для SQL-запиту так, щоб він повертав лише одну сторінку даних за один раз
* Встановлює директиви `offset` і `limit` для SQL-запиту так, щоб він повертав лише одну сторінку даних за один раз
(не більше 5 рядків на сторінці).
* Використовується у представленнях для відображення пейджера, який складається із переліку кнопок переходу по сторінкам,
* Використовується у представленнях для відображення пейджера, який складається із переліку кнопок переходу по сторінках,
про що буде описано у наступному підрозділі.
Наприкінці, дія `index` повертає представлення `index` і передає дані по країнах, з розбивкою на сторінки.
Наприкінці, дія `index` формує представлення з іменем `index` та передає до нього дані по країнах із інформацією про посторінкове
розділення.
Створення представлення <span id="creating-view"></span>
-----------------------
В директорії `views` створіть спочатку підкаталог `country`. Цей каталог буде використовуватись для всіх представленнь
контролера `country`. В каталозі `views/country`, створіть файл з іменем`index.php` що містить наступне:
В директорії `views` створіть спочатку під-директорію `country`. Цей каталог буде використовуватись для всіх
представлень контролера `country`. В директорії `views/country`, створіть файл з іменем `index.php`,
що містить наступне:
```php
<?php
@ -204,16 +208,16 @@ use yii\widgets\LinkPager;
<?= LinkPager::widget(['pagination' => $pagination]) ?>
```
Дане представлення містить два розділи для відображення даних по країнам. У першій частині, відображаються дані про країни
у вигляді невпорядкованого списку HTML. У другій частині, [[yii\widgets\LinkPager]] віджет з використанням інформації
про нумерацію сторінок. Віджет `LinkPager` відображаться у вигляді переліку кнопок.
При натисканні на будь-якій з них будуть оновлюватись дані країн на відповідній сторінці.
Дане представлення містить дві секції для відображення даних про країни. У першій частині, відображаються передані дані про країни
у вигляді невпорядкованого списку HTML. У другій частині, віджет [[yii\widgets\LinkPager]] з використанням інформації
про нумерацію сторінок. Віджет `LinkPager` відображається у вигляді переліку кнопок.
При натисканні на будь-якій з них будуть виводитись дані країн для відповідної сторінки.
Спробуєм <span id="trying-it-out"></span>
--------
Спробуємо <span id="trying-it-out"></span>
---------
Щоб побачити все, що було створено під час роботи, відкрийте в браузері наступний URL:
Щоб побачити як весь вищезазначений код працює, відкрийте в браузері наступний URL:
```
http://hostname/index.php?r=country/index
@ -229,16 +233,16 @@ http://hostname/index.php?r=country/index
http://hostname/index.php?r=country/index&page=2
```
За лаштунками, [[yii\data\Pagination|Pagination]] надає всю необхідну функціональність для розбиття набору даних на сторінки:
За лаштунками, [[yii\data\Pagination|Pagination]] надає всю необхідну функціональність для розділення набору даних на сторінки:
* Спочатку, [[yii\data\Pagination|Pagination]] представляє першу сторінку, яка відображає країни запитом SELECT
з умовою `LIMIT 5 OFFSET 0`. В результаті, будуть відображені перші знайдені пʼять країн.
* [[yii\widgets\LinkPager|LinkPager]] віджет відображає кнопки сторінок з URL-адресами створеними за допомогою
* Віджет [[yii\widgets\LinkPager|LinkPager]] відображає кнопки сторінок з URL-адресами створеними за допомогою
[[yii\data\Pagination::createUrl()|Pagination]]. URL-адреси будуть містити параметр запиту `page`,
який представляє різні номери сторінок.
* Якщо ви натиснете кнопку "2", спрацює новий запит, який буде відправлений на `country/index` з подальшим опрацюванням.
[[yii\data\Pagination|Pagination]] зчитає параметр `page` з URL-запиту і встановить номер поточної сторінки в 2-ку.
Таким чином, новий запит буде мати визначення `LIMIT 5 OFFSET 5` і поверне наступні пʼять країн для відображення.
* Якщо натиснути кнопку "2", новий запит для маршруту `country/index` спрацьовує і обробляється.
[[yii\data\Pagination|Pagination]] зчитає параметр `page` з URL-запиту і встановить для поточної сторінки номер 2.
Таким чином, новий запит до БД буде мати умову `LIMIT 5 OFFSET 5` і поверне наступні пʼять країн для відображення.
Підсумок <span id="summary"></span>
@ -247,7 +251,7 @@ http://hostname/index.php?r=country/index&page=2
В цьому розділі ви дізналися, як працювати з базою даних. Ви також дізналися, як вибирати і відображати дані на сторінках
за допомогою [[yii\data\Pagination]] і [[yii\widgets\LinkPager]].
У наступному розділі ви дізнаєтеся, як використовувати потужний інструмент генерації коду, що називається [Gii](tool-gii.md),
який допоможе вам швидко здійснювати деякі часто необхідні функції, такі як Create-Read-Update-Delete (CRUD)
операції для роботи з даними в таблицях баз даних.
Насправді, код, який ви щойно написали, Yii може автоматично сгенерувати з допомогою функції Gii.
У наступному розділі ви дізнаєтеся, як використовувати потужний інструмент генерації коду, що називається [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-uk/README.md),
який допоможе вам швидко створювати деякі часто необхідні функції, такі як Create-Read-Update-Delete (CRUD)
операції для роботи з даними в таблицях баз даних. Насправді, код, який ви щойно написали,
в Yii можливо автоматично згенерувати за допомогою інструменту Gii.

138
docs/guide-uk/start-forms.md

@ -1,24 +1,25 @@
Робота з формами
================
В даному розділі ми обговоримо отримання даних від користувачів. На сторінці буде розміщена форма з полями,
де можна буде вказати ім’я та email. Отримані дані будуть зображені на сторінці для їх підтвердження.
В даному розділі буде описано як створити нову сторінку з формою для отримання даних від користувачів.
На сторінці буде розміщена форма з полями, де можна буде вказати ім’я та e-mail.
Після отримання цих двох фрагментів інформації від користувача, сторінка відобразить введені значення знову для підтвердження.
Для того, щоб досягти дану ціль, крім створення [дії](structure-controllers.md) і двох [представлень](structure-views.md)
ви створите [модель](structure-models.md).
Для досягнення даної цілі, крім створення [дії](structure-controllers.md) і
двох [представлень](structure-views.md), ви також створите [модель](structure-models.md).
В даному керівництві ви дізнаєтесь:
В даному керівництві ви дізнаєтесь як:
* Як створити [модель](structure-models.md) для даних, вказаних користувачем
* Як оголосити правила перевірки введених даних
* Як створити HTML форму в [представленні](structure-views.md)
* створити [модель](structure-models.md) для даних, введених користувачем через форму;
* оголосити правила перевірки введених даних;
* створити HTML-форму в [представленні](structure-views.md).
Створення моделі <span id="creating-model"></span>
----------------
Створіть клас моделі `EntryForm` та збережіть у файлі `models/EntryForm.php` як показано нижче. Він буде використовуватись
для зберігання даних, введених користувачем. Детальніше про присвоєння імен файлам класів читайте в розділі
Дані, отримувані від користувача, будуть представлятись моделлю класу `EntryForm` як показано нижче, який
зберігатиметься у файлі `models/EntryForm.php`. Детальніше про присвоєння імен файлам класів читайте в розділі
[Автозавантаження класів](concept-autoloading.md).
```php
@ -26,6 +27,7 @@
namespace app\models;
use Yii;
use yii\base\Model;
class EntryForm extends Model
@ -43,22 +45,23 @@ class EntryForm extends Model
}
```
Даний клас розширює клас [[yii\base\Model]], який є складовою частиною фреймворка і зазвичай використовується для роботи з даними форм.
Даний клас успадкований від класу [[yii\base\Model]], який є складовою частиною фреймворка і зазвичай використовується для
роботи з даними форм.
> Інформація: Клас [[yii\base\Model]] використовується як батьківський клас для класів моделей, які *не* асоційовані
з таблицями бази даних. Клас [[yii\db\ActiveRecord]] зазвичай є батьківським для класів моделей, що відповідають
таблицям бази даних.
> Інформація: Клас [[yii\base\Model]] використовується як батьківський клас для класів моделей, які *не* асоційовані з таблицями бази даних.
Клас [[yii\db\ActiveRecord]] зазвичай є батьківським для класів моделей, що відповідають таблицям бази даних.
Клас містить 2 публічні властивості `name` і `email`, які використовуються для зберігання даних, вказаних користувачем.
Він також містить метод `rules()`, який повертає набір правил перевірки даних. Правила перевірки,
оголошені в коді вище означають наступне:
Клас `EntryForm` містить дві публічні властивості `name` та `email`, які використовуються для зберігання
даних, вказаних користувачем. Він також містить метод `rules()`, який повертає набір
правил перевірки даних. Правила перевірки, оголошені у вищезазначеному коді означають наступне:
* Поля `name` і `email` обов’язкові для заповнення
* Поле `email` повино містити правильну адресу email
* поля `name` і `email` обов’язкові для заповнення;
* поле `email` повинно містити правильну адресу e-mail.
Якщо об’єкт `EntryForm` заповнений даними користувача, то для їх перевірки ви можете викликати метод
[[yii\base\Model::validate()|validate()]]. У випадку невдалої перевірки властивість [[yii\base\Model::hasErrors|hasErrors]]
дорівнюватиме `true`. За допомогою [[yii\base\Model::getErrors|errors]] можна дізнатись, які саме виникли помилки.
цього об’єкту [[yii\base\Model::validate()|validate()]]. У випадку
невдалої перевірки властивість [[yii\base\Model::hasErrors|hasErrors]] дорівнюватиме `true`.
За допомогою [[yii\base\Model::getErrors|errors]] можна дізнатись, які саме помилки перевірки виникли.
```php
<?php
@ -66,10 +69,10 @@ $model = new EntryForm();
$model->name = 'Qiang';
$model->email = 'bad';
if ($model->validate()) {
// Good!
// Все добре!
} else {
// Failure!
// Use $model->getErrors()
// Невдача!
// Використовуйте $model->getErrors()
}
```
@ -77,8 +80,8 @@ if ($model->validate()) {
Створення дії <span id="creating-action"></span>
-------------
Далі створіть дію `entry` в контролері `site`, точно так, як ви робили це раніше.
Процес створення та використання дій описано у розділі [Говоримо «Привіт»](start-hello.md).
Далі необхідно створити дію `entry` в контролері `site`, яка буде використовувати нову модель. Процес
створення та використання дій описано у розділі [Говоримо "Привіт"](start-hello.md).
```php
<?php
@ -91,7 +94,7 @@ use app\models\EntryForm;
class SiteController extends Controller
{
// ...існуючий код...
// ...наявний код...
public function actionEntry()
{
@ -100,7 +103,7 @@ class SiteController extends Controller
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// дані в $model успішно перевірені
// робимо щось корисне з $model ...
// тут робимо щось корисне з $model ...
return $this->render('entry-confirm', ['model' => $model]);
} else {
@ -111,28 +114,32 @@ class SiteController extends Controller
}
```
Подія створює об’єкт `EntryForm`. Потім вона намагається заповнити модель даними із масива `$_POST`, доступ
до якого забеспечує Yii за допомогою [[yii\web\Request::post()]]. Якщо модель успішно заповнена, тобто користувач відправив
дані з HTML форми, то для перевірки даних буде викликаний метод [[yii\base\Model::validate()|validate()]].
Дія спочатку створює об’єкт `EntryForm`. Потім вона намагається заповнити модель
даними із масиву `$_POST`, доступ до якого забезпечується в Yii за допомогою [[yii\web\Request::post()]].
Якщо модель успішно заповнена, тобто користувач відправив дані з HTML-форми,
то для перевірки даних буде викликаний метод [[yii\base\Model::validate()|validate()]].
> Інформація: `Yii::$app` являє собою глобально доступний екземпляр-одинак [додатка](structure-applications.md)
(singleton). Одночасно це є [Service Locator](concept-service-locator.md), який надає доступ до компонентів, типу
`request`, `response`, `db` і так далі. В коді выще для доступу до даних з `$_POST` був використаний компонент `request`.
(singleton). Одночасно це є [Service Locator](concept-service-locator.md), який
надає компоненти, типу `request`, `response`, `db` і так далі для доступу до специфічної функціональності.
У вищезазначеному коді для доступу до даних з `$_POST` був використаний компонент екземпляру додатка `request`.
Якщо все гаразд, подія зобразить представлення `entry-confirm`, яке покаже користувачу вказані ним дані.
В іншому випадку буде зображено представлення `entry`, яке містить HTML форму і помилки перевірки даних, якщо вони є.
Якщо все гаразд, дія зобразить представлення `entry-confirm`, яке покаже користувачу вказані ним дані.
Якщо дані не передані або містять помилки, буде зображено представлення `entry` з
HTML-формою та повідомленнями про присутні помилки перевірки даних.
> Примітка: У цьому дуже простому прикладі ми просто відобразили сторінку підтвердження відправки даних.
На практиці, ви повинні розглянути використання [[yii\web\Controller::refresh()|refresh()]] або [[yii\web\Controller::redirect()|redirect()]]
> Примітка: У цьому дуже простому прикладі ми просто відобразили сторінку підтвердження відправлення даних. На практиці,
ви повинні розглянути використання [[yii\web\Controller::refresh()|refresh()]] або [[yii\web\Controller::redirect()|redirect()]]
для уникнення [проблеми повторного відправлення даних форми](http://en.wikipedia.org/wiki/Post/Redirect/Get).
Створення представлення <span id="creating-views"></span>
-----------------------
На завершення, створюємо два представлення з іменами `entry-confirm` і `entry`, котрі зображаються дією `entry` з минулого підрозділу.
На завершення, створюємо два файли представлення з іменами `entry-confirm` і `entry`, котрі зображаються дією `entry`
з минулого підрозділу.
Представлення `entry-confirm` просто зображає ім’я та email. Воно мусить бути збережене у файлі `views/site/entry-confirm.php`.
Представлення `entry-confirm` просто зображає ім’я та e-mail. Воно мусить бути збережене у файлі `views/site/entry-confirm.php`.
```php
<?php
@ -141,12 +148,12 @@ use yii\helpers\Html;
<p>Ви вказали наступну інформацію:</p>
<ul>
<li><label>Name</label>: <?= Html::encode($model->name) ?></li>
<li><label>Email</label>: <?= Html::encode($model->email) ?></li>
<li><label>Ім’я</label>: <?= Html::encode($model->name) ?></li>
<li><label>E-mail</label>: <?= Html::encode($model->email) ?></li>
</ul>
```
Представлення `entry` відображає HTML форму. Воно мусить бути збережене у файлі `views/site/entry.php`.
Представлення `entry` відображає HTML-форму. Воно мусить бути збережене у файлі `views/site/entry.php`.
```php
<?php
@ -166,10 +173,12 @@ use yii\widgets\ActiveForm;
<?php ActiveForm::end(); ?>
```
Для побудови HTML форми представлення використовує потужний [віджет](structure-widgets.md) [[yii\widgets\ActiveForm|ActiveForm]].
Методи `begin()` і `end()` виводять відкриваючий і закриваючий теги форми. Між цими викликами створюються поля для заповнення
за допомогою метода [[yii\widgets\ActiveForm::field()|field()]]. Першим іде поле для "name", другим — для "email".
Далі для генерації кнопки відправлення даних викликається метод [[yii\helpers\Html::submitButton()]].
Для побудови HTML-форми представлення використовує потужний [віджет](structure-widgets.md)
[[yii\widgets\ActiveForm|ActiveForm]]. Методи `begin()` і `end()` виводять відкриваючий і закриваючий теги форми
відповідно. Між цими викликами створюються поля для заповнення за допомогою метода
[[yii\widgets\ActiveForm::field()|field()]]. Першим іде поле "name",
другим — "email". Далі для генерації кнопки відправлення даних викликається метод
[[yii\helpers\Html::submitButton()]].
Спробуємо <span id="trying-it-out"></span>
@ -182,50 +191,53 @@ http://hostname/index.php?r=site/entry
```
Ви побачите сторінку з формою і двома полями для заповнення. Перед кожним полем є надпис, який вказує, яку саме
інформацію слід вказувати. Якщо ви натиснете на кнопку відправлення даних без самих даних або якщо вкажете email в невірному
форматі, то ви побачите повідомлення з помилкою біля кожного проблемного поля.
інформацію слід вказувати. Якщо ви натиснете на кнопку відправлення даних без самих даних або якщо вкажете e-mail в невірному
форматі, то ви побачите повідомлення про помилку біля кожного проблемного поля.
![Форма з помилками](images/start-form-validation.png)
![Форма з помилками перевірки](images/start-form-validation.png)
Після введення вірних даних і їх відправки, ви побачите сторінку з даними, які щойно вказали.
Після введення вірних даних і їх відправлення, ви побачите нову сторінку з даними, які щойно вказали.
![Підтвердження введених даних](images/start-entry-confirmation.png)
### Як працює вся ця "магія" <span id="magic-explained"></span>
Ви, більш за все, ставите питанням про те, як все ж ця HTML форма працює насправді і яким чином.
Весь процес може здатися трохи магічним: те як зображаються підписи до полів, помилки перевірки даних при некоректному
заповненні і те що все це відбувається без перезавантаження сторінки.
Ви можливо здивовані роботою HTML-форми поза лаштунками, тому що може здаватись магічним те, як
зображається підпис до кожного поля та виводяться повідомлення про помилки при некоректному заповненні
й те що все це відбувається без перезавантаження сторінки.
Так, початкова перевірка даних дійсно проходить на стороні клієнта за допомогою JavaScript, і повторно перевіряється
на стороні сервера (PHP). [[yii\widgets\ActiveForm]] достатньо продуманий, щоб взяти правила перевірки, які ви
оголосили в `EntryForm`, перетворити їх в JavaScript код і використовувати його для проведення перевірки.
На випадок, якщо в браузері буде вимкнено JavaScript валідація проходить і на стороні сервера, як показано в методі
На випадок, якщо в браузері буде вимкнено JavaScript перевірка проходить і на стороні сервера, як показано в методі
`actionEntry()`. Це дає впевненість в тому, що дані коректні за будь-яких обставин.
> Попередження: перевірка даних на стороні клієнта це зручність, яке забезпечує кращий користувальницький досвід.
Перевірка на стороні сервера завжди обов’язкова, незважаючи на клієнтську.
> Попередження: Перевірка даних на стороні клієнта - це зручність, яка забезпечує краще сприйняття користувачем.
Перевірка на стороні сервера завжди обов’язкова, не зважаючи на клієнтську.
Підписи для полів генеруються методом `field()`, на основі імен властивостей моделі. Наприклад, підпис `Name` генерується
для властивості `name`. Ви можете модифікувати підписи наступним чином:
для властивості `name`.
Ви можете модифікувати підписи в межах представлення
наступним чином:
```php
<?= $form->field($model, 'name')->label('Ваше ім’я') ?>
<?= $form->field($model, 'email')->label('Ваш Email') ?>
<?= $form->field($model, 'email')->label('Ваш e-mail') ?>
```
> Інформація: У Yii є велика кількість віджетів, які дозволяють швидко будувати складні і динамічні представлення.
Як ви дізнаєтесь пізніше, розробляти нові віджети доволі просто. Багато із представленнь можна винести у віджети,
> Інформація: У Yii є велика кількість віджетів, які дозволяють швидко будувати складні та динамічні представлення.
Як ви дізнаєтесь пізніше, розробляти нові віджети доволі просто. Багато із представлень можна винести у віджети,
щоб використовувати їх повторно в інших частинах і тим самим спростити розробку в майбутньому.
Підсумок <span id="summary"></span>
--------
В даному розділі ви випробували кожну частину шаблона проектування MVC. Ви дізналися як створювати класи моделей
для опрацювання і перевірки даних вказаних користувачем.
В даному розділі ви випробували кожну частину шаблона проектування MVC. Ви дізналися, як
створити клас моделі для презентування даних, вказаних користувачем, і як перевіряти ці дані.
Також, ви дізналися як отримати дані від користувача і як їх відобразити тому ж користувачу. Ця задача може займати
Також ви дізналися, як отримувати дані від користувачів та як повертати їх для відображення у браузері. Ця задача може займати
багато часу в процесі розробки. Yii надає потужні віджети, які роблять задачу максимально простою.
В наступному розділі ви дізнаєтесь як працювати з базами даних, що необхідно в більшості додатків.

82
docs/guide-uk/start-gii.md

@ -1,26 +1,25 @@
Генерація коду за допомогою Gii
===============================
Цей розділ описує, як використовувати [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md)
для автоматичної генерації коду, процедура якої має певні спільні риси з веб-сайтом. Використання Gii для
автоматичного створення коду є простою процедурою введення правильної інформації згідно інструкцій, які містяться
Цей розділ описує, як використовувати [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-uk/README.md)
для автоматичної генерації коду, який реалізовує найбільш поширений функціонал для веб-сайту. Використання Gii для
автоматичного створення коду є простою процедурою введення правильної інформації згідно з інструкціями, які містяться
на веб-сторінках Gii.
В даному керівництві ви дізнаєтесь:
В даному керівництві ви дізнаєтесь як:
* Увімкнути Gii у вашому додатку
* Використання Gii для генерації класів Active Record
* Використання Gii для генерації коду по операціям CRUD бази даних
* Налаштування коду, що був згенерований Gii
* увімкнути Gii у вашому додатку;
* використовувати Gii для генерації класів Active Record;
* використовувати Gii для генерації коду, який реалізовує операції CRUD для таблиці бази даних;
* налаштовувати код, що був згенерований Gii.
Підготовка Gii <span id="starting-gii"></span>
--------------
[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md) надається як [модуль](structure-modules.md).
Ви можете підключити модуль Gii, налаштувавши відповідну властивість [[yii\base\Application::modules|modules]]
в налаштуваннях додатка. В залежності від налаштувань вашого додатка, ви можете знайти наступний код
в конфігураційному файлі `config/web.php`:
[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-uk/README.md) постачається в Yii як [модуль](structure-modules.md).
Ви можете підключати модуль Gii, налаштувавши відповідну властивість [[yii\base\Application::modules|modules]] додатка. В залежності
від того, як ви створили ваш додаток, наступний код можливо вже присутній в конфігураційному файлі `config/web.php`:
```php
$config = [ ... ];
@ -31,25 +30,25 @@ if (YII_ENV_DEV) {
}
```
Наведена вище конфігурація підключає модуль `gii` у тому випадку, коли ваш додаток знаходиться в
[середовищі розробки](concept-configurations.md#environment-constants) і наслідує клас [[yii\gii\Module]].
Наведена вище конфігурація підключає модуль `gii`, представлений класом [[yii\gii\Module]], у тому випадку,
коли ваш додаток знаходиться в [середовищі розробки](concept-configurations.md#environment-constants).
Якщо ви перевірите [вхідний скрипт](structure-entry-scripts.md) `web/index.php` вашого додатку, то знайдете наступний
рядок `YII_ENV_DEV`, який переводить додаток в середовище розробки.
Якщо ви перевірите [вхідний скрипт](structure-entry-scripts.md) `web/index.php` вашого додатку, то
знайдете наступний рядок, який визначає `YII_ENV_DEV`.
```php
defined('YII_ENV') or define('YII_ENV', 'dev');
```
Завдяки даному рядку, ваш додаток знаходиться в режимі розробки, і буде підключати Gii, із вищевказаною конфігурацією.
Тепер ви можете отримати доступ до Gii за наступною адресою:
Тепер ви можете отримати доступ до Gii за наступною URL-адресою:
```
http://hostname/index.php?r=gii
```
> Примітка: Якщо ви звертаєтеся до Gii від машини, крім локальної, доступ буде заборонений за замовчуванням із міркувань
безпеки. Ви можете налаштувати Gii, додавши дозволені IP адреси, як показано нижче,
> Примітка: Якщо ви звертаєтесь до Gii від не локальної машини, доступ буде заборонений за замовчуванням із міркувань
безпеки. Ви можете налаштувати Gii, додавши дозволені IP-адреси, як показано нижче:
>
```php
'gii' => [
@ -78,68 +77,63 @@ http://hostname/index.php?r=gii
Якщо при використанні Gii, раніше вже був створений файл моделі, то він буде перезаписаний. Для того, щоб переглянути
відмінності в коді натисніть на кнопку `diff` поруч з ім’ям файлу.
![Прев’ю генератора моделі](images/start-gii-model-preview.png)
![Генератор моделі: попередній перегляд](images/start-gii-model-preview.png)
При перезаписі існуючого файлу, встановіть прапорець поруч із чекбоксом "перезаписати" ("overwrite"), а потім натисніть
кнопку "Створити" ("Generate"). При створенні нового файлу, ви можете просто натиснути на кнопку "Створити" ("Generate").
При перезаписі наявного файлу, позначте пункт "перезаписати" ("overwrite"), а потім натисніть кнопку "Створити" ("Generate"). При створенні нового файлу, ви можете просто натиснути на кнопку "Створити" ("Generate").
Далі, ви побачите сторінку підтвердження із відображенням коду, який був сгенерований. Якщо ви перезаписували вже існуючий
Далі, ви побачите сторінку підтвердження із відображенням коду, який був успішно згенерований. Якщо ви перезаписували вже наявний
файл, то побачите повідомлення про те, що він був переписаний і замінений на щойно згенерований код.
Генерація коду CRUD <span id="generating-crud"></span>
-------------------
CRUD розшифровується як Створити, Прочитати, Оновити, і Видалити, це операції що вирішують чотири спільні завдання
з маніпулюванням даними на більшості веб-сайтів. Щоб створити CRUD інтерфейс використовуючи Gii, оберіть
"CRUD Generator" (натиснувши відповідну кнопку на сторінці Gii). Наприклад, для таблиці "country", заповніть наступні поля форми:
CRUD - це акронім від англійських слів Create, Read, Update, Delete (Створити, Прочитати, Оновити, Видалити), що представляє чотири основні операції над даними на більшості веб-сайтів.
Щоб реалізувати функціонал CRUD використовуючи Gii, оберіть "CRUD Generator" (натиснувши відповідну кнопку на сторінці Gii). Наприклад, для таблиці "country", заповніть форму наступним чином:
* Клас моделі: `app\models\Country`
* Клас моделі пошуку: `app\models\CountrySearch`
* Клас контролера: `app\controllers\CountryController`
![CRUD генератор](images/start-gii-crud.png)
![Генератор CRUD](images/start-gii-crud.png)
Далі, натисніть на кнопку "Перегляду" ("Preview"). Ви побачите файл `models/Country.php` який буде створений в
результаті даних дій. Ви можете натиснути на ім’я файлу класу для перегляду його вмісту.
Далі, натисніть на кнопку "Перегляду" ("Preview"). Ви побачите список файлів, які будуть створені, як показано нижче.
![Прев’ю CRUD генератор](images/start-gii-crud-preview.png)
![Генератор CRUD: попередній перегляд](images/start-gii-crud-preview.png)
Якщо ви попередньо створили контролер `controllers/CountryController.php` і файл представлення `views/country/index.php`
(в розділі "Робота з базами даних" даного посібника), оберіть чекбокс "перезаписати" і замініть їх.
(Попередні версії файлів на мають повного CRUD функціоналу.)
(в розділі "Робота з базами даних" даного посібника), позначте пункт "перезаписати" і замініть їх. (Попередні версії файлів на мають повного функціоналу CRUD.)
Спробуємо <span id="trying-it-out"></span>
---------
Щоб побачити все, що було створено під час роботи, відкрийте в браузері наступний URL:
Щоб побачити як це працює, відкрийте в браузері наступний URL:
```
http://hostname/index.php?r=country/index
```
Ви побачите таблицю даних, що показує країни з таблиці бази даних. Ви зможете відсортувати сітку, або відфільтрувати
пошук, вказавши умови фільтрації в заголовках стовпців.
Ви побачите таблицю даних, що показує країни з таблиці бази даних. Ви можете відсортувати дані,
або відфільтрувати їх, вказавши умови фільтрації в заголовках колонок.
Для кожної країни, що відображається в таблиці, ви можете використати функції перегляду деталей, оновлення даних, або
взагалі видалити її. Ви також можете натиснути на кнопку "Створити країну" зверху сітки відображення, яка переадресує
вас на форму створення нової країни.
Для кожної країни, що відображається в таблиці, ви можете використати функції перегляду деталей, оновлення даних, або взагалі видалити її.
Ви також можете натиснути на кнопку "Створити країну" ("Create Country") над таблицею, яка переадресує вас на форму створення нової країни.
![Сітка даних країн](images/start-gii-country-grid.png)
![Таблиця даних країн](images/start-gii-country-grid.png)
![Оновлення даних країни](images/start-gii-country-update.png)
Нижче наведено перелік файлів, згенерованих Gii, у тому разі, якщо ви захочете дослідити, як реалізовані ці можливості,
або доналаштувати їх під свої потреби:
Нижче наведено перелік файлів, згенерованих Gii, у тому разі, якщо ви захочете дослідити як реалізовані ці можливості,
або налаштувати їх під свої потреби:
* Контролер: `controllers/CountryController.php`
* Моделі: `models/Country.php` і `models/CountrySearch.php`
* Представлення: `views/country/*.php`
> Інформація: Gii це гнучкий і розширюваний інструмент для генерації коду. При правильному використувані, від дозволить
вам значно прискорити розробку ваших додатків. Для більш докладної інформації, будьласка, зверніться до розділу
[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md).
> Інформація: Gii - це гнучкий і розширюваний інструмент для генерації коду. При правильному використані, він дозволить
вам значно прискорити розробку ваших додатків. Для більш докладної інформації, будь ласка, зверніться до розділу
[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-uk/README.md).
Підсумок <span id="summary"></span>

126
docs/guide-uk/start-hello.md

@ -1,30 +1,34 @@
Говоримо «Привіт»
Говоримо "Привіт"
=================
В даному розділі розглянемо як створити нову сторінку з надписом «Привіт». В процесі вирішеня задачі ви створите
[дію контролера](structure-controllers.md) і [представлення](structure-views.md):
В даному розділі розглянемо як створити нову сторінку з надписом "Привіт".
У процесі вирішення задачі ви створите [дію контролера](structure-controllers.md#creating-actions) і
[представлення](structure-views.md):
* Додаток опрацює запит і передасть управління відповідній дії
* Дія, в свою чергу, відобразить представлення з надписом "Привіт" кінцевому користувачу
* Додаток опрацює запит і передасть управління відповідній дії,
* а дія, у свою чергу, відобразить представлення з надписом "Привіт" кінцевому користувачу.
З допомогою даного керівництва ви вивчите:
В даному керівництві ви дізнаєтесь як:
1. Як створити [дію](structure-controllers.md), яка буде відповідати на запити
2. Як створити [представлення](structure-views.md), щоб формувати зміст відповіді
3. Як додаток відправляє запити до [дії](structure-controllers.md).
1. створити [дію](structure-controllers.md#creating-actions), яка буде відповідати на запити;
2. створити [представлення](structure-views.md), щоб скомпонувати вміст відповіді;
3. додаток відправляє запити до [дії](structure-controllers.md#creating-actions).
Створення дії <span id="creating-action"></span>
-------------
Для нашої задачі знадобиться [дія](structure-controllers.md#creating-actions) `say`, котра читає параметр `message` із
запиту і відображає його значення користувачу. Якщо в запиті відсутній параметр `message`, то дія буде відображати «Привіт».
Для нашої задачі знадобиться [дія](structure-controllers.md#creating-actions) `say`, яка зчитує
параметр `message` із запиту і відображає його значення користувачу. Якщо в запиті
відсутній параметр `message`, то дія буде відображати "Привіт".
> Інформація: [Дії](structure-controllers.md#creating-actions) можуть бути запущені безпосередньо користувачем і
згруповані в [контролери](structure-controllers.md). Результатом виконання дії є відповідь, яку отримує користувач.
> Інформація: [Дії](structure-controllers.md#creating-actions) являються об’єктами, на які користувач може посилатись для
виконання. Дії згруповані в [контролери](structure-controllers.md). Результатом виконання
дії є відповідь, яку отримує користувач.
Дії оголошуються в [контролерах](structure-controllers.md). Для зручності, ви можете оголосити дію
`say` в уже існуючому контролері `SiteController`, який оголошений у файлі класа `controllers/SiteController.php`:
Дії повинні оголошуватись в [контролерах](structure-controllers.md). Для простоти, ви можете
оголосити дію `say` в уже наявному контролері `SiteController`, який визначений
у файлі класу `controllers/SiteController.php`:
```php
<?php
@ -35,7 +39,7 @@ use yii\web\Controller;
class SiteController extends Controller
{
// ...існуючий код...
// ...наявний код...
public function actionSay($message = 'Привіт')
{
@ -44,34 +48,33 @@ class SiteController extends Controller
}
```
В наведеному коді дія `say` визначена як метод `actionSay` в класі `SiteController`.
Yii використовує префікс `action` для того, щоб відрізняти методи-дії від звичайних методів у класі контролеру.
Назва після префікса `action` вважається ідентифікатором відповідної дії.
В наведеному коді дія `say` оголошена як метод `actionSay` в класі `SiteController`.
Yii використовує префікс `action` для того, щоб відрізняти методи-дії і звичайні методи. Назва після префікса `action`
вважається ідентифікатором відповідної дії.
Коли черга доходить до іменування дій, слід розуміти як Yii поводиться з ідентифікаторами дій. Ідентифікатори дій можуть
бути лише в нижньому регістрі. Якщо ідентифікатор складається з декількох слів, вони з’єднуються дефісами
(наприклад, `create-comment`). Імена методів дій отримуються шляхом видалення дефісів з ідентифікатора,
перетворення першої літери кожного слова у верхній регістр і додавання префікса `action`. Наприклад,
ідентифікатор дії `create-comment` відповідає методу `actionCreateComment`.
Коли черга доходить до іменування дій, слід розуміти як Yii відноситься до ідентифікаторів дій.
Ідентифікатори дій задаються в нижньому регістрі. Якщо ідентифікатор складається з декількох слів, вони
з’єднуються дефісами, тобто `create-comment`. Імена методів дій отримуються шляхом видалення дефісів з ідентифікатора,
перетворення першої літери кожного слова у верхній регістр і додавання префікса `action`.
Наприклад, ідентифікатор дії `create-comment` відповідає методу `actionCreateComment`.
Метод дії у нашому прикладі приймає параметр `$message`, який за замовчуванням визначено як `"Привіт"` (так само,
як ви звикли визначати значення за замовчуванням для аргументів функції у PHP). Коли додаток
отримує запит і визначає, що дія `say` відповідає за його опрацювання, додаток призначає
цьому параметру значення однойменного параметра із запиту. Іншими словами, якщо запит містить
параметр `message` зі значенням `"До побачення"`, то змінній `$message` всередині дії буде призначено це значення.
Метод дії приймає параметр `$message`, який за замовчуванням дорівнює `"Привіт"` (так само, як ви звикли визначати
значення за замовчуванням для аргументів методу у PHP). Коли додаток отримує запит і визначає,
що дія `say` відповідає за його опрацювання, параметр наповнюється одноіменним значенням із запиту.
Іншими словами, якщо запит містить параметр `message` із значенням `"До побачення"`, то змінній `$message`
всередині дії буде призначено це значення.
Всередені метода дії, для відображення [представлення](structure-views.md) з ім’ям `say`, використовується метод
[[yii\web\Controller::render()|render()]]. Для того, щоб вивести повідомлення, у представлення передається параметр `message`.
Результат відображення з допомогою `return` передається додатку, котрий віддає його користувачу.
Всередині метода дії, для відображення [представлення](structure-views.md) з ім’ям `say`, використовується метод
[[yii\web\Controller::render()|render()]]. Для того, щоб вивести повідомлення,
у представлення передається параметр `message`. Результат формування повертається методом дії. Цей результат приймається
додатком та відображається кінцевому користувачу в браузері (як частина цілої HTML-сторінки).
Створення представлення <span id="creating-view"></span>
-----------------------
[Представлення](structure-views.md) є скриптами, які використовуються для формування тіла відповіді. Для нашого
додатку ви створите представлення `say`, яке буде виводити параметр `message`, отриманий із метода дії:
[Представлення](structure-views.md) є скриптами, які використовуються для генерації вмісту відповіді.
Для нашого додатку ви створите представлення `say`, яке буде виводити параметр `message`, отриманий із методу дії:
```php
<?php
@ -81,16 +84,16 @@ use yii\helpers\Html;
```
Представлення `say` мусить бути збережено у файлі `views/site/say.php`. Коли метод [[yii\web\Controller::render()|render()]]
викликається в дії, він буде шукати PHP файл з ім’ям виду `views/ControllerID/ActionID/ViewName.php`.
викликається в дії, він буде шукати PHP файл з ім’ям виду `views/ControllerID/ViewName.php`.
Варто відмітити, що в коді вище параметр `message` [[yii\helpers\Html::encode()|екранується для HTML]] перед відображенням.
Це обов’язково, так як параметр приходить від користувача, котрий може спробувати провести
Варто зазначити, що у вищезазначеному коді параметр `message` [[yii\helpers\Html::encode()|екранується для HTML]]
перед відображенням. Це обов’язково, бо параметр приходить від користувача, котрий може спробувати провести
[XSS атаку](http://uk.wikipedia.org/wiki/%D0%9C%D1%96%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D0%B8%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%96%D0%BD%D0%B3),
шляхом вставки небезпечного JavaScript кода.
Ви можете доповнити представлення `say` HTML тегами, текстом або кодом PHP. Фактично, представлення `say` є
простим PHP скриптом, який виконується методом [[yii\web\Controller::render()|render()]]. Зміст, який відображається
скриптом представлення, буде передано додатком користувачу.
Ви можете доповнити представлення `say` HTML-тегами, текстом або кодом PHP.
Фактично, представлення `say` є простим PHP скриптом, який виконується методом [[yii\web\Controller::render()|render()]].
Вміст, який формується скриптом представлення, буде передано додатком користувачу.
Спробуємо <span id="trying-it-out"></span>
@ -106,34 +109,35 @@ http://hostname/index.php?r=site/say&message=Привіт+світ
Буде відображена сторінка з надписом "Привіт світ". Вона використовує ту ж шапку і футер, що і решта сторінок додатка.
Якщо ви не вкажете параметр `message`, то побичите на сторінці лише «Привіт». Це відбувається тому, що `message` передається
в метод `actionSay()` і значення за замовчуванням — «Привіт».
Якщо ви не вкажете параметр `message` в URL, то побачите на сторінці лише "Привіт". Це відбувається тому, що `message` передається як параметр в метод `actionSay()`, а коли він не вказаний,
використовується значення за замовчуванням "Привіт".
> Інформація: Нова сторінка використовує ту ж шапку і футер, що і решта сторінок, тому що метод
[[yii\web\Controller::render()|render()]] автоматично підставляється в результат представлення `say` в, так званий,
[макет](structure-views.md#layouts) `views/layouts/main.php`.
> Інформація: Нова сторінка використовує ту ж шапку і футер, що й решта сторінок, тому що метод [[yii\web\Controller::render()|render()]]
автоматично підставляє результат формування представлення `say` в, так званий, [макет](structure-views.md#layouts), який в даному
випадку розміщено у `views/layouts/main.php`.
Параметр `r` потребує додаткових пояснень. Він пов’язаний з [маршрутом (route)](runtime-routing.md), який являє
собою унікальний ідентифікатор, який вказує на дію. Його формат `ControllerID/ActionID`. Коли додаток отримує запит,
він перевіряє цей параметр і, використовуючи `ControllerID`, визначає який контролер слід використовувати для
опрацювання запиту. Потім, контролер використовує частину `ActionID`, щоб визначити яка дія виконує реальну роботу.
В нашому випадку маршрут `site/say` буде відповідати контролеру `SiteController` і його дії `say`.
В результаті, для відпрацювання запиту буде викликано метод `SiteController::actionSay()`.
Параметр `r` у вищезазначеному URL потребує додаткових пояснень. Він вказує [маршрут](runtime-routing.md), що являє собою унікальний для додатка ідентифікатор,
який вказує на дію. Його формат `ControllerID/ActionID`. Коли додаток отримує запит,
він перевіряє цей параметр і, використовуючи частину `ControllerID`, визначає який контролер
слід використовувати для опрацювання запиту. Потім, контролер використовує частину `ActionID`,
щоб визначити яку дію використовувати для виконання реальної роботи. В нашому випадку маршрут `site/say`
буде відповідати контролеру `SiteController` і його дії `say`. В результаті,
для опрацювання запиту буде викликано метод `SiteController::actionSay()`.
> Інформація: Як і дії, контролери також мають ідентифікатори, котрі однозначно визначають їх в додатку.
Ідентифікатори контролерів використовують ті ж самі правила, що і ідентифікатори дій. Імена класів
контролерів отримуються шляхом видалення дефісів з ідентифікатора, перетворення першої літери кожного слова у верхній
регістр і додавання в кінець `Controller`. Наприклад, ідентифікатор контролера `post-comment` відповідає
імені класа контролера `PostCommentController`.
Ідентифікатори контролерів використовують ті ж самі правила іменування, що і ідентифікатори дій. Імена класів контролерів
отримуються шляхом видалення дефісів з ідентифікатора, перетворення першої літери кожного слова у верхній регістр
і додавання в кінець слова `Controller`. Наприклад, ідентифікатор контролера `post-comment` відповідає
імені класу контролера `PostCommentController`.
Підсумок <span id="summary"></span>
--------
В даному розділі ви торкнулися теми контролерів і представлень в паттерні MVC. Ви створили дію, як частину контролера,
який опрацьовує запити, і представлення, яке приймає участь у формувані відповіді. В цьому процесі ніяк не була задіяна
модель, так як в ролі даних виступає тільки простий параметр `message`.
В даному розділі ви торкнулися таких частин шаблону проектування MVC як контролери та представлення.
Ви створили дію, як частину контролера, для опрацювання специфічного запиту. А також ви створили представлення
для формування вмісту відповіді. В цьому процесі ніяк не використовувалась модель, оскільки в ролі даних виступає тільки простий параметр `message`.
Також ви ознайомились із концепцією маршрутизації, котра є сполучною ланкою між запитом користувача і дією контролера.
В наступному розділі ви дізнаєтесь як створювати моделі і добавляти нові сторінки з HTML формами.
В наступному розділі ви дізнаєтесь як створити модель та додати нову сторінку з HTML-формою.

123
docs/guide-uk/start-installation.md

@ -1,27 +1,38 @@
Встановлення Yii
================
Ви можете встановити Yii двома шляхами: використовуючи менеджер пакетів [Composer](https://getcomposer.org/)
або завантаживши архів. Перший варіант э бажанішим, тому що дозволить встановити всі нові
[розширення](structure-extensions.md) або оновити Yii однією командою.
Ви можете встановити Yii двома шляхами: використовуючи менеджер пакунків [Composer](https://getcomposer.org/) або завантаживши файл архіву.
Перший варіант є бажанішим, тому що дозволяє встановлювати нові [розширення](structure-extensions.md) або оновлювати Yii простим виконанням однієї команди.
> Примітка: На відміну від Yii 1, після стандартного встановлення Yii 2 ми отримуємо як фреймворк, так і шаблон додатка.
Після стандартного встановлення Yii ми отримуємо як фреймворк, так і шаблон проекту. Шаблон проекту - це робочий проект Yii,
в якому реалізовано деякий базовий функціонал, такий як система входу/виходу користувачів, форма зворотнього зв’язку і т.д.
Його код організовано в рекомендований спосіб. Таким чином, це може слугувати гарною відправною точкою для ваших проектів.
У цьому та у наступних кількох розділах буде описано, як встановити Yii з так званим *Базовим шаблоном проекту* та
як реалізувати нові можливості на базі цього шаблону. Також Yii надає інший шаблон із назвою
[Розширений шаблон проекту](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-uk/README.md), який краще використовувати у середовищі розробки в команді
для розробки складних додатків.
> Інформація: Базовий шаблон проекту підходить для розробки 90 відсотків веб-додатків. Він відрізняється
від Розширеного шаблону проекту в основному організацією коду. Якщо ви малознайомі з Yii, наполегливо
рекомендується використовувати Базовий шаблон проекту із-за його простоти, але й достатньої функціональності.
Встановлення за допомогою Composer <span id="installing-via-composer"></span>
----------------------------------
Якщо у вас все ще не вставновлено Composer, то це можна зробити за допомогою інструкції на [getcomposer.org](https://getcomposer.org/download/).
Користувачам Linux та Mac OS X потрібно виконати наступні команди:
Якщо у вас все ще не встановлено Composer, то це можна зробити за допомогою інструкції на
[getcomposer.org](https://getcomposer.org/download/). Користувачам Linux та Mac OS X потрібно виконати наступні команди:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
При роботі з Windows, необхідно завантажити та запустити [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe).
В разі наявності проблем або якщо вам необхідна додаткова інформація, зверніться до [документації Composer](https://getcomposer.org/doc/).
В разі наявності проблем або якщо вам необхідна додаткова інформація,
зверніться до [документації Composer](https://getcomposer.org/doc/).
Якщо ж Composer вже було встановлено раніше, переконайтесь, що використовуюєте його останню версію.
Якщо ж Composer вже було встановлено раніше, переконайтесь, що використовуєте його останню версію.
Ви можете оновити Composer простою командою `composer self-update`.
Після встановлення Composer, встановити Yii можна виконавши наступну команду з директорії, яка доступна через Web:
@ -30,12 +41,12 @@
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Перша команда встановить [плагін ресурсів composer (composer-asset-plugin)](https://github.com/francoispluchino/composer-asset-plugin/),
що дозволить керувати залежностями пакетів Bower та NPM за допомогою Composer. Цю команду потрібно виконати лише один раз.
Друга команда встановить Yii у директорію під назвою `basic`. За бажанням, ви можете обрати іншу директорію.
що дозволить керувати залежностями пакунків Bower та NPM за допомогою Composer. Цю команду потрібно виконати лише
один раз. Друга команда встановить Yii у директорію під назвою `basic`. За бажанням, ви можете обрати інше ім’я для директорії.
> Примітка: Під час встановлення може статися так, що Composer запитає облікові дані від вашого профілю на Github,
> через встановлені обмеження запитів Github API. Це є нормальним, оскільки Composer повинен отримати багато інформації
> для всіх пакетів із Github. Надання облікових даних профіля Github збільшить кількість запитів до API, потрібних для
> Примітка: Під час встановлення може статися так, що Composer запитає облікові дані від вашого профілю на GitHub,
> через встановлені обмеження запитів GitHub API. Це є нормальним, оскільки Composer повинен отримати багато інформації
> для всіх пакунків із GitHub. Надання облікових даних профілю GitHub збільшить кількість запитів до API, потрібних для
> подальшої роботи Composer. Для більш детальної інформації, будь ласка, зверніться до
> [документації Composer](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens).
@ -55,11 +66,11 @@
1. Завантажте архів за адресою [yiiframework.com](http://www.yiiframework.com/download/);
2. Розпакуйте архів в директорію, доступну через Web.
3. Відредагуйте файл конфігурації `config/web.php` - необхідно заповнити секретний ключ до пункту `cookieValidationKey`
(це виконуєтся автоматично при вставленні Yii через Composer):
3. Відредагуйте файл конфігурації `config/web.php` - необхідно ввести таємний ключ до пункту `cookieValidationKey`
(це виконується автоматично при вставленні Yii через Composer):
```php
// !!! встановити секретний ключ до наступного пункту (якщо порожній) - це необхідно для валідації кукі
// !!! встановити таємний ключ до наступного пункту (якщо порожній) - це необхідно для перевірки кукі
'cookieValidationKey' => 'enter your secret key here',
```
@ -67,35 +78,36 @@
Інші параметри встановлення <span id="other-installation-options"></span>
---------------------------
Вище наведені інструкції по встановленню Yii, які також створюють базовий веб-додаток, готового до роботи.
Це відмінний варіант для невеликих проектів або для тих, хто тільки розпочинає вивчати Yii.
Вище наведені інструкції показують як встановити Yii та створити базовий веб-додаток, який працює "з коробки".
Цей підхід є гарною відправною точкою для більшості проектів, як малих так і великих. Це особливо підходить для тих, хто тільки
розпочинає вивчати Yii.
Але є ще й інші варіанти встановлення:
* Якщо вам потрібен тільки один фреймворк і ви хотіли б створити додаток з нуля, використовуйте інструкцію,
що описана у розділі [Створення додатка з нуля](tutorial-start-from-scratch.md).
* Якщо хочете розпочати з більш насиченого додатка, який добре підходить для роботи в команді, використовуйте
[разширений шаблон додатка](tutorial-advanced-app.md).
* Якщо ви хочете розпочати з більш складного додатка, який краще підходить для роботи в команді, використовуйте
[Розширений шаблон проекту](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-uk/README.md).
Перевірка встановлення <span id="verifying-installation"></span>
----------------------
Після встановлення, ви можете перевірити за допомогою браузера свій встановлений додаток Yii за наступним URL:
Після встановлення, ви можете використовувати свій браузер для доступу до встановленого додатку Yii за наступним URL:
```
http://localhost/basic/web/index.php
```
Даний URL передбачає встановлення додатка в директорію `basic` базової директорії вашого локального веб-сервера (`localhost`).
Можливо вам знадобиться підкорегувати налаштування свого сервера.
Даний URL припускає, що Yii встановлено в директорію `basic` у базовій директорії вашого локального веб-сервера (`localhost`).
Вам, можливо, буде потрібно налаштувати його на своїй системі.
![Успішно встановленний Yii](images/start-app-installed.png)
![Успішно встановлений Yii](images/start-app-installed.png)
Ви повинні побачити сторінку браузера із привітанням "Congratulations!". Якщо ні — провірте, чи задовільняють
налаштування PHP вимогам Yii одним із способів:
Ви повинні побачити сторінку із привітанням "Congratulations!" у вашому браузері. Якщо ж ні, будь ласка, перевірте, чи задовольняють
налаштування PHP вимоги Yii. Це можна зробити одним із наведених способів:
* Браузером перейдіть на URL `http://localhost/basic/requirements.php`
* Використайте браузер для доступу до URL `http://localhost/basic/requirements.php`
* Або виконайте наступні команди в консолі:
```
@ -103,38 +115,40 @@ http://localhost/basic/web/index.php
php requirements.php
```
Для коректної роботи фреймворка вам необхідно мати PHP, який відповідає його мінімальним вимогам.
Основна вимога — PHP версії 5.4 або вище. Якщо ваш додаток працює з базою даних, необхідно встановити
[розширення PHP PDO](http://www.php.net/manual/en/pdo.installation.php) та відповідний драйвер
(наприклад, `pdo_mysql` для MySQL).
Необхідно налаштувати PHP таким чином, щоб він відповідав мінімальним вимогам Yii. Основна вимога — PHP версії 5.4 або вище.
Якщо ваш додаток працює з базою даних, необхідно встановити [розширення PHP PDO](http://www.php.net/manual/en/pdo.installation.php)
та відповідний драйвер (наприклад, `pdo_mysql` для MySQL).
Налаштування веб серверів <span id="configuring-web-servers"></span>
Налаштування веб-серверів <span id="configuring-web-servers"></span>
-------------------------
> Інформація: можете пропустити даний підрозділ, якщо ви тільки розпочали знайомитися з фреймворком
і не розгортаєте його на робочому сервері.
Додаток, встановлений за інструкціями, наведеними вище, буде працювати одразу як з [Apache HTTP server](http://httpd.apache.org/),
так і з [Nginx HTTP server](http://nginx.org/) під Windows, Mac OS X чи Linux із встановленим PHP 5.4 або вище.
Yii 2.0 також сумісний із віртуальною машиною [HHVM](http://hhvm.com/) фейсбука, однак є деякі крайні випадки,
де HHVM поводиться інакше, ніж рідний PHP, тому ви повинні бути дуже уважними при використанні HHVM.
Додаток, встановлений за інструкціями, наведеними вище, буде працювати одразу як
з [Apache HTTP server](http://httpd.apache.org/), так і з [Nginx HTTP server](http://nginx.org/) на
Windows, Mac OS X чи Linux із встановленим PHP 5.4 або вище. Yii 2.0 також сумісний із віртуальною машиною Фейсбука
[HHVM](http://hhvm.com/), однак є деякі крайні випадки, де HHVM поводиться інакше,
ніж рідний PHP, тому ви повинні бути дуже уважними при використанні HHVM.
На рабочому сервері вам напевно захочеться змінити URL додатку з `http://www.example.com/basic/web/index.php`
на `http://www.example.com/index.php`. Для цього необхідно змінити кореневу директорію в налаштуваннях веб сервера на `basic/web`.
Додатково можно сховати `index.php` із URL, як це описано у розділі [Маршрутизація та створення URL](runtime-routing.md).
Далі буде показано як налаштувати Apache і Nginx для цих цілей.
На робочому сервері вам напевно захочеться змінити URL додатку з `http://www.example.com/basic/web/index.php`
на `http://www.example.com/index.php`. Для цього необхідно змінити кореневу директорію в налаштуваннях веб-сервера на `basic/web`.
Додатково можна сховати `index.php` із URL, як це описано у розділі [Маршрутизація та створення URL](runtime-routing.md).
Далі буде описано як налаштувати Apache або Nginx для цих цілей.
> Інформація: Встанновлюючи `basic/web` кореневою директорією веб-сервера, ви забороняєте кінцевим користувачам доступ
до приватного коду додатка та важливим даним, які знаходяться на одному рівні з `basic/web`. Це робить додаток більш захищенним.
> Інформація: Встановлюючи `basic/web` кореневою директорією веб-сервера, ви забороняєте кінцевим користувачам доступ
до приватного коду додатка та важливих даних, які знаходяться на одному рівні
з `basic/web`. Це робить додаток більш захищеним.
> Інформація: Якщо додаток працює на хостингу, де немає доступу до налаштувань сервера, ви всеодно можете змінити структуру
додатка для покращення безпеки, як описано в розділі [Робота на shared хостингу](tutorial-shared-hosting.md).
> Інформація: Якщо додаток працює на хостингу, де немає доступу
до налаштувань сервера, ви все ще можете змінити структуру додатка для покращення безпеки,
як описано в розділі [Робота на віртуальному хостингу](tutorial-shared-hosting.md).
### Рекомендовані налаштування Apache <span id="recommended-apache-configuration"></span>
Додайте наступний код до файлу конфігурации Apache `httpd.conf` або в конфігураційний файл віртуального хоста.
Додайте наступний код до файлу конфігурації `httpd.conf` веб-сервера Apache або в конфігурацію віртуального хоста.
Не забудьте замінити `path/to/basic/web` на коректний шлях до `basic/web`.
```
@ -158,16 +172,16 @@ DocumentRoot "path/to/basic/web"
### Рекомендовані налаштування Nginx <span id="recommended-nginx-configuration"></span>
Для використання [Nginx](http://wiki.nginx.org/) вам потрібно встановити PHP як [FPM SAPI](http://php.net/install.fpm).
Використовуйте наступні параметри Nginx, замінивши `path/to/basic/web` на коректний шлях до `basic/web`,
а `mysite.local` на бажаний домен.
Використовуйте наступні параметри Nginx, замінивши `path/to/basic/web` на коректний шлях до
`basic/web`, а `mysite.local` на актуальний домен.
```
server {
charset utf-8;
client_max_body_size 128M;
listen 80; ## listen for ipv4
#listen [::]:80 default_server ipv6only=on; ## слухаємо ipv6
listen 80; ## "слухаємо порт" для ipv4
#listen [::]:80 default_server ipv6only=on; ## "слухаємо порт" для ipv6
server_name mysite.local;
root /path/to/basic/web;
@ -177,11 +191,11 @@ server {
error_log /path/to/basic/log/error.log;
location / {
# Перенаправляємо всі запити від неіснуючих директорій або файлів на index.php
# Перенаправляємо всі запити на index.php, якщо це не наявна директорія або файл
try_files $uri $uri/ /index.php?$args;
}
# розкоментуйте строки нижче для запобігання обробки звернень Yii до неіснуючих статичних файлів
# розкоментуйте рядки нижче для запобігання обробки звернень Yii до не наявних статичних файлів
#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
# try_files $uri =404;
#}
@ -200,7 +214,8 @@ server {
}
```
Використовуючи дану конфігурацію встановіть `cgi.fix_pathinfo=0` в `php.ini`, щоб запобігти зайвим системним викликам `stat()`.
Використовуючи дану конфігурацію встановіть `cgi.fix_pathinfo=0` у файлі `php.ini`,
щоб запобігти зайвим системним викликам `stat()`.
Врахуйте також, що при використанні HTTPS необхідно задавати `fastcgi_param HTTPS on;` щоб Yii міг корректно
визначати захищене з’єднання.
Врахуйте також, що при використанні HTTPS необхідно задавати `fastcgi_param HTTPS on;` щоб Yii
міг коректно визначати захищене з’єднання.

36
docs/guide-uk/start-looking-ahead.md

@ -1,33 +1,33 @@
Наступні кроки
==============
Якщо ви прочитали весь розділ "Приступаючи до роботи", то, напевне, ви створили повноцінний додаток Yii. У процесі ви дізналися,
як реалізувати деякі найбільш часто використовувані функції, таких, як отримання даних від користувачів за допомогою HTML-форми,
вибірка даних з бази даних і відображення даних із розбиттям по сторінкам. Також ви дізналися, як використовувати
[Gii](tool-gii.md) для автоматичної генерації коду, що перетворює більшу частину процесу веб-розробки у завдання настільке просте,
як заповнення деяких форм.
Якщо ви прочитали всю главу "Перше знайомство", то, напевно, ви створили повноцінний додаток Yii. У процесі ви дізналися, як реалізувати деякі найбільш часто
використовувані функції, такі, як отримання даних від користувачів за допомогою HTML-форми, вибірка даних з бази даних
і відображення даних із розділенням на сторінки. Також ви дізналися, як використовувати [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-uk/README.md)
для автоматичної генерації коду, що перетворює більшу частину процесу веб-розробки у завдання настільки просте, як заповнення деяких форм.
У цьому розділі зібрані ресурси пов’язані з Yii, які допоможуть вам бути більш продуктивними при використанні фреймворку.
* Документація
- [Докладний Посібник](http://www.yiiframework.com/doc-2.0/guide-README.html):
Як випливає з назви, посібник точно визначає, як Yii повинен працювати і дає вам загальні вказівки щодо його застосування.
Це найважливіший Yii підручник, з яким ви маєте ознайомитись, перш ніж писати Yii код.
- [Опис класів](http://www.yiiframework.com/doc-2.0/index.html):
Визначає використання кожного класу, представленого в Yii.
Їм слід користуватися, коли ви пишете код і хочете розібратися у використанні конкретного класу, методу, властивості.
Опис класів найкраще використовувати після контекстного розуміння всього фреймворка.
- [Wiki статті](http://www.yiiframework.com/wiki/?tag=yii2):
Wiki статті написані користувачами Yii на основі їх власного досвіду.
Більшість з них написані як рецепти з куховарської книги, які показують, як вирішити конкретні проблеми з використанням Yii.
Як випливає з назви, посібник точно визначає, як Yii повинен працювати і дає вам загальні вказівки
щодо його застосування. Це найважливіший Yii підручник, з яким ви маєте ознайомитись, перш ніж писати Yii код.
- [Довідник класів](http://www.yiiframework.com/doc-2.0/index.html):
Визначає використання кожного класу, представленого в Yii. Ним слід користуватися, коли ви пишете
код і хочете розібратися у використанні конкретного класу, методу, властивості. Довідник класів найкраще використовувати після контекстного розуміння всього фреймворка.
- [Wiki-статті](http://www.yiiframework.com/wiki/?tag=yii2):
Wiki-статті написані користувачами Yii на основі їх власного досвіду. Більшість з них написані
як рецепти з куховарської книги, які показують, як вирішити конкретні проблеми, використовуючи Yii.
Варто зауважити, що якість даних статей може бути не такою гарною, як у Докладному Посібнику, але вони корисні тим,
що вони охоплюють ширші теми і часто можуть забезпечити готові рішення для подальшого використання.
що охоплюють ширші теми і часто можуть забезпечити готовими рішеннями для подальшого використання.
- [Книги](http://www.yiiframework.com/doc/)
* [Розширення](http://www.yiiframework.com/extensions/):
Yii пишається бібліотекою із тисяч розширень, внесених користувачами, які можуть бути легко підключені у ваші додатки та зробити розробку додатків ще швидшим і простішим.
* Спільнота
- Форум: <http://www.yiiframework.com/forum/>
- IRC chat: The #yii channel on the freenode network (<irc://irc.freenode.net/yii>)
- Чат IRC: Канал #yii мережі freenode (<irc://irc.freenode.net/yii>)
- GitHub: <https://github.com/yiisoft/yii2>
- Facebook: <https://www.facebook.com/groups/yiitalk/>
- Twitter: <https://twitter.com/yiiframework>
- Фейсбук: <https://www.facebook.com/groups/yiitalk/>
- Твіттер: <https://twitter.com/yiiframework>
- LinkedIn: <https://www.linkedin.com/groups/yii-framework-1483367>
- Stackoverflow: <http://stackoverflow.com/questions/tagged/yii2>

79
docs/guide-uk/start-workflow.md

@ -2,31 +2,32 @@
==============
Після встановлення Yii, базовий додаток буде доступний або по URL `http://hostname/basic/web/index.php`,
або по `http://hostname/index.php`, в залежності від налаштування Web сервера. Даний розділ - загальне введення в
або по `http://hostname/index.php`, в залежності від налаштування веб-сервера. Даний розділ - загальне введення в
організацію коду, вбудований функціонал і опрацювання запитів додатком Yii.
> Інформація: Для спрощення, далі в даному посібнику передбачається, що Yii встановлений в директорію `basic/web`,
яка, в свою чергу, встановлена, як коренева директорія в налаштуваннях Web сервера. В результаті, звернувшись до URL
`http://hostname/index.php` ви отримаєте доступ до додатку. Відрегулюйте URL-адреси для ваших потреб.
> Інформація: Для спрощення, далі в даному посібнику припускається, що Yii встановлений в директорію `basic/web`,
яка, в свою чергу, встановлена, як коренева директорія в налаштуваннях веб-сервера. В результаті, звернувшись до URL
на зразок `http://hostname/index.php`, ви отримаєте доступ до додатку.
Будь ласка, відредагуйте URL-адреси наведені у прикладах відповідно до ваших потреб.
Функціонал <span id="functionality"></span>
----------
Вбудований шаблон простого додатку складається з чотирьох сторінок:
Встановлений базовий додаток складається з чотирьох сторінок:
* домашня сторінка, відображається при переході по URL `http://hostname/index.php`
* "About" ("Про нас")
* на сторінці "Contact" знаходиться форма зворотнього зв’язку, на якій користувач може звернутися до розробника по e-mail
* на сторінці "Login" відображається форма авторизації. Спробуйте авторизуватись з логіном/паролем "admin/admin".
Зверніть увагу на зміну розділу "Login" в головному меню на "Logout".
* домашня сторінка, відображається при переході по URL `http://hostname/index.php`;
* сторінка "About" ("Про нас");
* сторінка "Contact", що відображає форму зворотнього зв’язку, за допомогою якої користувач може звернутися до розробника по e-mail;
* сторінка "Login", на якій відображається форма для аутентифікації користувачів. Спробуйте увійти з логіном/паролем
"admin/admin". Зверніть увагу на зміну пункту "Login" в головному меню на "Logout".
Ці сторінки використовують спільний хедер (шапка сайта) і футер (підвал). В "шапці" знаходиться головне меню, за
допомогою якого користувач переміщається по сайту.
Ці сторінки використовують спільну шапку і футер. Шапка містить головне меню, за
допомогою якого здійснюється навігація по сайту.
У нижній частині вікна ви зможете бачити системні повідомлення Yii - журнал, відлагоджувальну інформацію,
повідомлення про помилки, запити до бази даних і т.п. Відображенням данної інформацію керує
[вбудований відладчик](tool-debugger.md), він записує і відображає інформацію про хід виконання додатку.
У нижній частині вікна ви зможете бачити системні повідомлення Yii - налагоджувальну інформацію,
повідомлення про помилки, запити до бази даних і т.п. Відображенням даної інформацію керує
[вбудований відладчик](https://github.com/yiisoft/yii2-debug/blob/master/docs/guide-uk/README.md), він записує і відображає інформацію про хід виконання додатку.
Крім веб-додатка, існує консольний скрипт `yii`, що розташований в базовій директорії додатка.
Цей скрипт може бути використаний для виконання фонових завдань або завдань обслуговування додатка.
@ -39,38 +40,40 @@
Нижче наведений перелік основних директорій і файлів вашого додатку (вважаємо, що додаток встановлений в директорію `basic`):
```
basic/ кореневий каталог додатка
basic/ базова директорія додатка
composer.json використовується Composer'ом, містить опис додатку
config/ конфігураційні файли
config/ містить конфігураційні файли
console.php конфігурація консольного додатка
web.php конфігурація Web додатка
web.php конфігурація веб-додатка
commands/ містить класи консольних команд
controllers/ контролери
models/ моделі
runtime/ файли, які генерує Yii під час виконання додатку (логи, кеш і т.п.)
controllers/ містить класи контролерів
models/ містить класи моделей
runtime/ містить файли, які генерує Yii під час виконання додатку (журнали, кеш і т.п.)
vendor/ містить пакунки Composer'а і, власне, сам фреймворк Yii
views/ представлення додатку
web/ коренева директорія Web додатку. Містить файли, доступні через Web
assets/ скрипти, які використовуються додатком (js, css)
index.php місце входження в додаток Yii. З нього розпочинається виконання додатку
yii скрипт виконання консольного додатку Yii
views/ містить представлення додатку
web/ базова веб-директорія, містить файли, доступні через Web
assets/ містить файли ресурсів (javascript та css)
index.php вхідний (або bootsrap) скрипт для додатку Yii, з нього розпочинається виконання додатку
yii скрипт виконання консольних команд Yii
```
В цілому, додаток Yii можна розділити на дві категорії файлів: розміщенні в `basic/web` і розміщенні в інших директоріях.
Перша категорія доступна через HTTP (наприклад, браузером), друга недоступна зовні, та і не повинна бути, так як містить службову інформацію.
В Yii реалізована схема проектування [модель-представлення-контролер (MVC)](http://http://uk.wikipedia.org/wiki/Model-View-Controller),
яка відповідає структурі директорій додатка. В директорії `models` знаходяться класи [моделей](structure-models.md),
в `views` розміщені скрипти [представлень](structure-views.md), а в каталозі `controllers` всі класи [контролерів](structure-controllers.md) додатка.
В Yii реалізований шаблон проектування [модель-представлення-контролер (MVC)](http://uk.wikipedia.org/wiki/Model-View-Controller),
що відображається на вищезазначеній структурі директорій додатка. В директорії `models` знаходяться всі класи [моделей](structure-models.md),
у `views` розміщені всі скрипти [представлень](structure-views.md), а в директорії `controllers`
всі класи [контролерів](structure-controllers.md) додатка.
Діаграма нижче демонструє статичну структуру додатка.
![Статична структура додатка](images/application-structure.png)
В кожному додатку Yii є місце входження в додаток, `web/index.php` - це єдиний PHP-скрипт доступний для виконання через Web.
Він отримує вхідний запит і створює екземпляр [додатку](structure-applications.md). [Додаток](structure-applications.md)
опрацьовує вхідні запити з допомогою [компонентів](concept-components.md) і відправляє запит контролеру.
[Віджети](structure-widgets.md) використовуються у [представленнях](structure-views.md) для побудови динамічних інтерфейсів сайта.
Він отримує вхідний запит і створює екземпляр [додатку](structure-applications.md).
[Додаток](structure-applications.md) опрацьовує запит з допомогою його [компонентів](concept-components.md)
і відправляє запит елементам MVC. [Віджети](structure-widgets.md) використовуються у [представленнях](structure-views.md)
для побудови складних та динамічних елементів інтерфейсу користувача.
Життєвий цикл запиту <span id="request-lifecycle"></span>
@ -80,15 +83,15 @@ basic/ кореневий каталог додатка
![Життєвий цикл запиту](images/request-lifecycle.png)
1. Користувач робить запит до [місця входження](structure-entry-scripts.md) `web/index.php`.
2. Скрипт завантажує конфігурацію [configuration](concept-configurations.md) і створює екземпляр
1. Користувач робить запит до [вхідного скрипту](structure-entry-scripts.md) `web/index.php`.
2. Вхідний скрипт завантажує [конфігурацію](concept-configurations.md) додатка та створює екземпляр
[додатку](structure-applications.md) для наступного опрацювання запиту.
3. Додаток визначає [маршрут](runtime-routing.md) запиту за допомогою компонента [запиту](runtime-requests.md) додатка.
4. Додаток створює екземпляр [контролера](structure-controllers.md) для виконання запиту.
5. Контролер, в свою чергу, створює [дію](structure-controllers.md) і накладає на неї фільтри.
6. Якщо хоч один фільтр поверне помилку - виконання додатку зупиняється.
7. Якщо всі фільтри пройдені - додаток виконується.
8. Дія завантажує модель даних. Скоріше за все із бази даних.
9. Дія генерує представлення, відображаючи в ньому дані (в т.ч. і отримані із моделі).
10. Згенерований вид додатку передається як компонент [відповіді](runtime-responses.md).
11. Компонент "відповіді" відправляє готовий результат роботи додатку браузеру користувача.
8. Дія завантажує модель даних, скоріше за все із бази даних.
9. Дія формує представлення та відображає в ньому дані (в т.ч. і отримані із моделі).
10. Сформований результат передається компоненту [відповіді](runtime-responses.md) додатка.
11. Компонент "відповіді" відправляє готовий результат роботи додатка браузеру користувача.

6
docs/guide-uk/structure-application-components.md

@ -3,7 +3,7 @@
Додатки є [сервіс локаторами](concept-service-locators.md). Вони зберігають багато так званих
*компонентів додатку*, які надають різноманітні інструменти для обробки запитів. Наприклад,
компонент `urlManager` відповідає за маршрутизацію веб запитів до потрібного контролера;
компонент `urlManager` відповідає за маршрутизацію веб-запитів до потрібного контролера;
компонент `db` надає інструменти для работи з базою даних; і т. д.
Кожний компонент додатка має свій унікальний ID, який дозволяє ідентифікувати його серед інших різноманітних компонентів
@ -108,12 +108,12 @@
* [[yii\base\Application::request|request]]: являє собою об’єкт запиту, який сервер отримує від кінцевих користувачів.
Більш детальна інформація наведена у розділі [Запити](runtime-requests.md).
* [[yii\web\Session|session]]: надає інформація про сесії.
Даний компонент доступний тільки у [[yii\web\Application|веб додатках]].
Даний компонент доступний тільки у [[yii\web\Application|веб-додатках]].
Більш детальна інформація наведена у розділі [Сесії і куки](runtime-sessions-cookies.md).
* [[yii\web\UrlManager|urlManager]]: використовується для розбору і побудови URL.
Більш детальна інформація наведена у розділі [Маршрутизація та створення URL](runtime-routing.md).
* [[yii\web\User|user]]: являє собою інформацію авторизованого користувача.
Даний компонент доступний тільки у [[yii\web\Application|веб додатках]].
Даний компонент доступний тільки у [[yii\web\Application|веб-додатках]].
Більш детальна інформація наведена у розділі [Аутентифікація](security-authentication.md).
* [[yii\web\View|view]]: використовується для відображення представлень.
Більш детальна інформація наведена у розділі [Представлення](structure-views.md).

12
docs/guide-uk/structure-applications.md

@ -8,8 +8,8 @@
> Інформація: В залежності від контексту, коли ми говорим "додаток", це може означати як об’єкт додатка,
так і прикладну систему додатка вцілому.
Існує два типи додатків: [[yii\web\Application|веб додатки]] та [[yii\console\Application|консольні додатки]].
Як можна здогадатися із назв, перший тип, в основному, займається обробкою веб запитів, а другий - консольними командами.
Існує два типи додатків: [[yii\web\Application|веб-додатки]] та [[yii\console\Application|консольні додатки]].
Як можна здогадатися із назв, перший тип, в основному, займається обробкою веб-запитів, а другий - консольними командами.
## Конфігурації додатка <span id="application-configurations"></span>
@ -57,7 +57,7 @@ $config = require(__DIR__ . '/../config/web.php');
#### [[yii\base\Application::basePath|basePath]] <span id="basePath"></span>
Властивість [[yii\base\Application::basePath|basePath]] вказує на кореневу директорію додатка. Ця директорія,
яка містить весь код прикладної системи додатка. В цій директорії, зазвичай, можуть знаходитись підкаталоги `models`,
яка містить весь код прикладної системи додатка. В цій директорії, зазвичай, можуть знаходитись під-директорії `models`,
`views`, `controllers`, які містять код, що відповідає шаблону проектування MVC.
Ви можете налаштувати властивість [[yii\base\Application::basePath|basePath]], вказавши прямий шлях до директорії
@ -170,7 +170,7 @@ if (YII_ENV_DEV) {
#### [[yii\web\Application::catchAll|catchAll]] <span id="catchAll"></span>
Дана властивість підтримується тільки [[yii\web\Application|веб додатками]]. Вона вказує на
Дана властивість підтримується тільки [[yii\web\Application|веб-додатками]]. Вона вказує на
[дії контролера](structure-controllers.md), які мусять обробляти всі вхідні запити від користувача. Переважно,
це використовується, коли додаток знаходиться в режимі обслуговування і повинен обробити всі запити через одну дію.
@ -249,7 +249,7 @@ Yii встановлює відповідність між ID контролер
відповідна назва класу контролера (без простору імен) буде `PostController`, а повна назва класу буде
`app\controllers\PostController`.
Класи контролерів можуть також знаходитись у підкаталогах директорії, що відповідає її простору імені.
Класи контролерів можуть також знаходитись у під-директоріях директорії, що відповідає її простору імені.
Наприклад, ID контролера `admin/post` відповідає повне ім’я класа контролера `app\controllers\admin\PostController`.
Дуже важливо, щоб повне ім’я класа контролера могло бути використане [автозавантаженням](concept-autoloading.md)
@ -389,7 +389,7 @@ $width = \Yii::$app->params['thumbnail.size'][0];
`post/create`, `admin/post/create`. Якщо дію не вказано, то буде використано значення за замовчуванням,
що вказане у [[yii\base\Controller::defaultAction]].
Для [yii\web\Application|веб додатків] значення за замовчуванням даної властивості рівне `'site'`, що означає
Для [yii\web\Application|веб-додатків] значення за замовчуванням даної властивості рівне `'site'`, що означає
контролер `SiteController` і його дія за замовчуванням. Таким чином, якщо ви спробуєте отримати доступ
до додатка, не вказавши маршрут - буде відображено результат дії `app\controllers\SiteController::actionIndex()`.

14
docs/guide-uk/structure-controllers.md

@ -1,7 +1,7 @@
Контролери
==========
Контролери є частиною [MVC](http://uk.wikipedia.org/wiki/Модель-вид-контролер) архітектури. Це об’єкти класів,
Контролери є частиною архітектури [MVC](http://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C-%D0%B2%D0%B8%D0%B4-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%B5%D1%80). Це об’єкти класів,
успадкованих від [[yii\base\Controller]] та відповідають за обработку запитів і генерацію відповідей.
Зокрема, після отримання контролю від [додатків](structure-applications.md), контролери проаналізують
вхідні дані, передадуть їх у [моделі](structure-models.md), додадуть результати моделі у
@ -91,7 +91,7 @@ ModuleID/ControllerID/ActionID
## Створення контролерів <span id="creating-controllers"></span>
У [[yii\web\Application|веб додатках]] контролери повинні бути успадкованими від класу [[yii\web\Controller]]
У [[yii\web\Application|веб-додатках]] контролери повинні бути успадкованими від класу [[yii\web\Controller]]
або його нащадків. Аналогічно для [[yii\console\Application|консольних додатків]], контролери повинні бути
успадкованими від класу [[yii\console\Controller]] або його нащадків. Наступний код визначає контролер `site`:
@ -179,7 +179,7 @@ ID контролера також може містити префікс суб
Кожний додаток має контролер за замовчуванням, вказаний через властивість [[yii\base\Application::defaultRoute]].
Коли в запиті не вказано [маршрут](#routes), то буде використано маршрут із даної властивості.
Для [[yii\web\Application|веб додатків]], це значення рівне `'site'`, у той час, як для
Для [[yii\web\Application|веб-додатків]], це значення рівне `'site'`, у той час, як для
[[yii\console\Application|консольних додатків]], це `'help'`. Таким чином, якщо вказаний URL
`http://hostname/index.php`, це значить, що контролер `site` виконає обробку запиту.
@ -312,7 +312,7 @@ class HelloWorldAction extends Action
Значення, що повертається, може бути об’єктом [відповіді](runtime-responses.md), яке буде відправлено
кінцевому користувачу.
* Для [[yii\web\Application|веб додатків]], значення, що повертається, також може бути довільними даними,
* Для [[yii\web\Application|веб-додатків]], значення, що повертається, також може бути довільними даними,
яке буде призначене до [[yii\web\Response::data]], а потім конвертоване у рядок, що представляє тіло відповіді.
* Для [[yii\console\Application|консольних додатків]], значення, що повертається, також може бути числом, що
представляє [[yii\console\Response::exitStatus|статус виходу]] виконання команди.
@ -333,7 +333,7 @@ public function actionForward()
### Параметри дій <span id="action-parameters"></span>
Методи дій для вбудованих дій і методи `run()` для окремих дій можуть приймати, так звані, *параметри дії*.
Їх значення беруться із запитів. Для [[yii\web\Application|веб додатків]], значення кожного з параметрів дії
Їх значення беруться із запитів. Для [[yii\web\Application|веб-додатків]], значення кожного з параметрів дії
береться із `$_GET`, використовуючи назву параметра у якості ключа;
для [[yii\console\Application|консольних додатків]] - вони відповідають аргументам командної строки.
@ -378,8 +378,8 @@ public function actionView(array $id, $version = null)
значення `['123']`. Якщо запит буде містити URL `http://hostname/index.php?r=post/view&id=123`, то параметр
`$id` все рівно отримає масив, оскільки скалярне значення `'123'` буде автоматично сконвертовано у масив.
Вищенаведені приклади в основному показують як параметри дій працюють для веб додатків. Більше інформації
про параметри консольних додатків наведено в секції [Консольні команди](tutorial-console.md).
Вищенаведені приклади в основному показують як параметри дій працюють для веб-додатків. Більше інформації
про параметри консольних додатків наведено в розділі [Консольні команди](tutorial-console.md).
### Дія за замовчуванням <span id="default-action"></span>

6
docs/guide-uk/structure-entry-scripts.md

@ -1,11 +1,11 @@
Вхідні скрипти
==============
Вхідні скрипти це перша ланка в процесі початкового завантаження додатку. Додаток (веб додаток або консольний додаток)
Вхідні скрипти це перша ланка в процесі початкового завантаження додатку. Додаток (веб-додаток або консольний додаток)
має єдиний вхідний скрипт. Кінцеві користувачі роблять запити до вхідного скрипта, який створює об’єкти додатка та
перенаправляє запит до них.
Вхідні скрипти для веб додатків повинні бути збережені в директоріях, доступних із веб, таким чином, вони можуть бути
Вхідні скрипти для веб-додатків повинні бути збережені в директоріях, доступних із веб, таким чином, вони можуть бути
доступними кінцевим користувачам. Зазвичай вони називаються `index.php`, але також можут використовуватись і інші
імена, які можуть бути розпізнані веб-серверами.
@ -23,7 +23,7 @@
* Викликають метод [[yii\base\Application::run()]] додатка для обробки вхідного запиту.
## Веб додатки <span id="web-applications"></span>
## Веб-додатки <span id="web-applications"></span>
Нижче наведений код вхідного скрипта для [базового шаблону додатка](start-installation.md).

2
docs/guide-uk/structure-overview.md

@ -16,7 +16,7 @@
компонентів додатка і їх координацію для обробки запиту.
* [компоненти додатку](structure-application-components.md): це об’єкти, зареєстровані в додатку і які надають
різноманітні можливості для обробки запитів.
* [модулі](structure-modules.md): це самодостатні пакети, що включають в себе повністю всі ресурси для MVC.
* [модулі](structure-modules.md): це самодостатні пакунки, що включають в себе повністю всі ресурси для MVC.
Додаток може бути організовано за допомогою декількох модулів.
* [фільтри](structure-filters.md): це код, який повинен бути виконаний до і після обробки запиту контролерами.
* [віджети](structure-widgets.md): це об’єкти, які можуть бути вбудованими у [представлення](structure-views.md).

20
docs/guide-uk/tutorial-yii-integration.md

@ -12,15 +12,15 @@
Для використання сторонньої бібліотеки в Yii додатку, ви, в основному, повинні переконатися, що класи в бібліотеці
правильно підключені або можуть завантажуватися автоматично.
### Використання пакетів Composer <span id="using-composer-packages"></span>
### Використання пакунків Composer <span id="using-composer-packages"></span>
Багато сторонніх бібліотек випущені у вигляді пакетів [Composer](https://getcomposer.org/).
Багато сторонніх бібліотек випущені у вигляді пакунків [Composer](https://getcomposer.org/).
Ви можете встановити такі бібліотеки, виконавши два прості кроки:
1. змінити файл `composer.json` вашого додатку і вказати які пакети Composer необхідно встановити.
2. виконати команду `composer install` для встановлення зазначених пакетів.
1. змінити файл `composer.json` вашого додатку і вказати, які пакунки Composer необхідно встановити.
2. виконати команду `composer install` для встановлення зазначених пакунків.
Класи встановлених пакетів Composer можуть бути автоматично завантажені, використовуючи автозавантажувача Composer.
Класи встановлених пакунків Composer можуть бути автоматично завантажені, використовуючи автозавантажувача Composer.
Переконайтися, що [вхідний скрипт](structure-entry-scripts.md) вашого додатку містить наступні рядки для
встановлення автозавантажувача Composer:
@ -34,7 +34,7 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
### Використовуйте завантажені бібліотеки <span id="using-downloaded-libs"></span>
Якщо бібліотека не випущена в якості пакету Composer, ви повинні слідувати згідно її інструкції по встановленню.
Якщо бібліотека не випущена в якості пакунку Composer, ви повинні слідувати згідно її інструкції по встановленню.
У більшості випадків, вам потрібно буде завантажити випущений файл вручну і розархівувати його в каталог `BasePath/vendor`,
де `BasePath` представляє собою [основний шлях](structure-applications.md#basePath) вашого додатку.
@ -88,8 +88,8 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php';
composer install
Перша команда встановлює [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/),
який дозволяє керувати залежностями пакетів bower і npm через Composer. Навіть якщо ви захочете використовувати тільки
прошарки бази даних або інші, не повʼязані ресурсами, можливості Yii, вам всерівно необхідно встановити даний пакет composer.
який дозволяє керувати залежностями пакунків Bower і NPM через Composer. Навіть якщо ви захочете використовувати тільки
прошарки бази даних або інші, не повʼязані ресурсами, можливості Yii, вам все-одно необхідно встановити даний пакунок composer.
Дивіться також загальний [розділ про встановлення Yii](start-installation.md#installing-via-composer), для отримання додаткової
інформації про Composer та проблеми, які можуть виникнути під час встановлення.
@ -108,7 +108,7 @@ new yii\web\Application($yiiConfig); // НЕ ВИКЛИКАЙТЕ run() в ць
Як ви бачите, цей код дуже схожий на код [вхідного скрипта](structure-entry-scripts.md) типового додатку Yii.
Єдина відмінність заключається в тому, що після створення екземпляру додатку, метод `run()` не викликається.
Це звʼязано з тим, що при виклику `run()`, Yii захоплює контроль над процесом обробки запиту, що в даному випадку
не є потрібним, так як цю задачу виконує вже існуючий додаток.
не є потрібним, так як цю задачу виконує вже наявний додаток.
Як і у випадку з Yii додатком, вам необхідно налаштувати екземпляр додатку, виходячи із середовища запущеної сторонньої системи.
Наприклад, щоб скористатися можливостями [Active Record](db-active-record.md), необхідно налаштувати
@ -126,7 +126,7 @@ new yii\web\Application($yiiConfig); // НЕ ВИКЛИКАЙТЕ run() в ць
Замість того, щоб переписувати цілий додаток під Yii 2, ви можете просто його покращити, використовуючи деякі функції,
що доступні тільки в Yii 2. Для цього потрібно виконати наступні дії.
> Примітка: Yii 2 вимагає версію PHP 5.4 або вищу. Переконайтися, що і сервер і існуючий додаток підтримують її.
> Примітка: Yii 2 вимагає версію PHP 5.4 або вищу. Переконайтися, що і сервер і наявний додаток підтримують її.
По-перше, встановіть Yii 2 до вашого поточного додатку, виконавши дії, описані в [попередньому підрозділі](#using-yii-in-others).

41
docs/internals-uk/translation-workflow.md

@ -69,15 +69,21 @@ php build translation "../docs/guide" "../docs/guide-uk" "Ukrainian guide transl
- Tip → Підказка
- Note → Примітка
- Info → Інформація
- Warning → Попередження
### Список термінів
- action — дія;
- active record — (не перекладається);
- (advanced/basic) application — (розширений/базовий) додаток;
- Advanced/Basic Project Template — Розширений/Базовий шаблон проекту;
- (Web) application — (веб-)додаток;
- attach handler — прикріпити обробник;
- attribute of the model — атрибут моделі;
- authentication — аутентифікація / установлення справжності;
- authorization — авторизація/уповноваження;
- branch — гілка;
- browser — браузер;
- (asset) bundle — звʼязка (ресурсів);
- cache — кеш;
- camel case — (не перекладається);
- column — колонка;
@ -86,43 +92,52 @@ php build translation "../docs/guide" "../docs/guide-uk" "Ukrainian guide transl
- configuration — конфігурація;
- content — вміст;
- contributor — учасник;
- controller — контролер;
- cookies — кукі;
- customization — (тонке) налаштування;
- debug mode — режим налагодження (див. production mode);
- debugger — відладчик;
- (function) declaration — оголошення (функції);
- definition — визначення;
- design pattern — шаблон проектування;
- development mode — режим розробки;
- (root) directory — (коренева) директорія;
- eager loading — жадібне завантаження (див. lazy loading);
- email address — email адреса;
- email address — адреса e-mail;
- environment — середовище;
- exception — виключення;
- PHP extension — розширення PHP;
- existing — наявний/присутній; // перекладати як "існуючий" не вірно
- (PHP) extension — розширення (PHP);
- Facebook — Фейсбук;
- folder — папка/каталог;
- field (of the table) — поле/атрибут (таблиці);
- fixture — фікстура;
- footer — футер;
- fork — форк;
- framework — фреймворк;
- front-controller — фронт-контролер;
- getter — геттер;
- (event) handler — обробник (події);
- hash — хеш;
- help - довідка;
- helper - хелпер;
- help довідка;
- helper хелпер;
- id — ідентифікатор;
- image — зображення;
- instance — екземпляр;
- issue — питання/проблема; // в залежності від контексту
- layout — макет;
- lazy loading — відкладене завантаження;
- log, logging — журнал, журналювання;
- markdown — (не перекладається);
- method — метод (обʼєкта/класу);
- merge — поєднання;
- model — модель, модель даних;
- model form — модель форми;
- parameter — параметр (методу/функції);
- Model-View-Controller (MVC) — Модель-Представлення-Контролер (MVC);
- package — пакунок;
- pagination — розділення на сторінки;
- parameter — параметр;
- to parse — обробляти;
- placeholder — заповнювач;
- production mode — режим провадження (див. debug mode);
- plugin — плагін;
- production mode — робочий режим (див. debug mode);
- property — властивість (обʼєкта);
- pull request — (не перекладається);
- query builder — конструктор запитів;
@ -133,18 +148,20 @@ php build translation "../docs/guide" "../docs/guide-uk" "Ukrainian guide transl
- route, routing — маршрут, маршрутизація;
- row (of the table) — рядок (таблиці);
- setter — сеттер;
- shared hosting — віртуальний хостинг;
- staging area — буферна зона;
- string — текстовий рядок;
- sub-directory — під-директорія;
- substitution — підставлення/заміщення;
- tabular input — табличний ввід;
- template engine — шаблонізатор;
- theming — темізація;
- trait — трейт;
- Twitter — Твіттер;
- unit tests — модульні тести;
- to validate — перевіряти;
- valid — коректний;
- validator — валідатор;
- validation — перевірка;
- validator class — клас валідатора;
- versioning — версіонування;
- view — представлення.
- versioning — версіонування.

Loading…
Cancel
Save