Основи модуль, the definitive guide to yii, yii php framework
Модуль - це самодостатня програмна одиниця, що складається з моделей. уявлень. контролерів та інших компонентів. Багато в чому модуль схожий з додатком. Основна відмінність полягає в тому, що модуль не може використовуватися сам по собі - тільки в складі програми. Користувачі можуть звертатися до контролерів всередині модуля абсолютно так само, як і в разі роботи зі звичайними контролерами додатки.
1. Створення модуля ¶
Модуль організований як директорія, ім'я якої виступає в якості унікального ідентифікатора модуля. Структура директорії модуля схожа на структуру базової директорії додатку. Нижче представлена типова структура директорії модуля з ім'ям forum:
У кореневій директорії модуля повинен знаходитися клас модуля, що успадковує CWebModule. Ім'я класу визначається, використовуючи вираз ucfirst ($ id). 'Module'. де $ id відповідає ідентифікатору модуля (або назвою директорії модуля). Клас модуля виконує роль центрального сховища інформації, спільно використовуваної компонентами модуля. Наприклад, ми можемо використовувати CWebModule :: params для зберігання параметрів модуля, а також CWebModule :: components для спільного використання компонентів програми на рівні модуля.
Підказка: Для створення базового каркаса модуля можна скористатися генератором модулів, що входять до складу Gii.
2. Використання модуля ¶
Для використання модуля необхідно помістити папку модуля в директорію modules базової директорії додатку. Далі необхідно оголосити ідентифікатор модуля у властивості додатка modules. Наприклад, щоб скористатися модулем forum. наведеними вище, можна використовувати наступну конфігурацію програми:
Крім того, модулю можна задати початкові значення властивостей. Порядок використання такої ж, як і з компонентами програми. Наприклад, модуль forum може мати в своєму класі властивість з ім'ям postPerPage. яке може бути встановлено в конфігурації програми наступним чином:
До примірника модуля можна звертатися за допомогою властивості module активного в даний момент контролера. Через екземпляр модуля можна отримати доступ до спільно використовуваної інформації на рівні модуля. Наприклад, для того щоб звернутися до згаданого вище властивості postPerPage. ми можемо скористатися таким виразом:
Підказка: Якщо контролер знаходиться в папці папки controllers. ми також можемо використовувати формат маршруту. Наведений вище. Наприклад, припустимо, що контролер PostController знаходиться в папці forum / controllers / admin. тоді ми можемо звернутися до дії create через forum / admin / post / create.
3. Вкладені модулі ¶
Модулі можуть бути вкладеними один в одного скільки завгодно раз, тобто один модуль може містити в собі інший, який містить в собі ще один. Перший ми будемо називати модуль-батько. другий - модуль-нащадок. Модулі-нащадки повинні бути описані в властивості modules модуля-батька точно так же, як ми описуємо модулі в файлі конфігурації програми.
Для звернення до дії контролера в дочірньому модулі використовується маршрут parentModuleID / childModuleID / controllerID / actionID.