Yii2: Віджети

594

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У даній статті ми познайомимося з таким поняттям фреймворку Yii, як віджети. У Yii2 віджети дозволяють уникнути повторення коду і можуть бути використані багаторазово в різних уявленнях. Давайте ж розглянемо приклади створення найпростішого елемента.

Отже, віджети – це деякі компоненти, які призначені в першу чергу для реалізації елементів інтерфейсу, які можна використовувати багаторазово. Класичним прикладом такого елемента може бути меню. Меню використовується практично на кожній сторінці вашого сайту і від сторінки до сторінки залишається незмінним. Тобто, від сторінки до сторінки ми повинні повторювати один і той же код для отримання меню і його виведення. Але завдяки віджетів ми можемо уникнути цієї стомлюючої процедури і створити меню тільки один раз, а потім просто викликати його.

У Yii2 вже є велика кількість різних віджетів: для створення форм, меню, jQuery UI та інші. Крім того, фреймворк дозволяє нам створювати власні віджети. Давайте на простому прикладі розберемо створення найпростішого елемента.

Створюються вони у папці components, яку ми можемо створити докорінно програми. Для створення віджета ми повинні успадкувати клас yii\base\Widget. Всередині класу віджета ми можемо перевизначити методи init run. Також можемо створювати і власні методи. Метод init, як правило, використовується для нормалізації властивостей віджета (установка значень), а метод run повертає результат візуалізації. Результат можна вивести за допомогою echo або повернути через return.

Давайте створимо простий приклад віджету, який буде вітати відвідувачів сайту.

class HiWidget extends Widget
{
public function run()
{
return ‘

Hello!

‘;
}
}

Yii2: Віджети

Тепер спробуємо викликати віджет створений в поданні. Для цього необхідно звернутися до створеного класу і викликати статичний метод widget.

Yii2: Віджети

В результаті на сторінці ми побачимо виводиться вітальну рядок. Що тут може бентежити? Поки що у нас всього один рядок і ми просто помістили її в метод run. А що якщо ми формуємо велике меню – наприклад mega menu? В цьому випадку у нас буде багато коду HTML. Але це не проблема. Yii пропонує нам створити поряд з класом віджета папку views, в яку і помістити подання для віджету. Саме уявлення можна викликати методом render. Давайте спробуємо.

Створимо вигляд hi.php:

Hello!

А в методі run повернемо його:

public function run()
{
return $this->render(‘hi’);
}

Yii2: Віджети

На виході ми отримаємо той самий варіант. В результаті ми з вами створили найпростіший варіант віджету, який можна використовувати як завгодно багато разів. Насправді ця тема далеко не обмежується цими знаннями. Віджети можуть бути куди як складніше, вони можуть бути налаштованим, тобто в них можна передавати параметри. Але це тема окремої статті. Ми ж на цьому поки що зупинимося. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.